正则表达式问题c#
本文关键字:问题 正则表达式 | 更新日期: 2023-09-27 18:03:04
const string strRegex = @"(?<city_country>.+) (cca|ca.|ungefähr) (?<price>['d.,]+) (eur)?";
searchQuery = RemoveSpacesFromString(searchQuery);
Regex regex = new Regex(strRegex, RegexOptions.IgnoreCase);
Match m = regex.Match(searchQuery);
ComplexAdvertismentsQuery query = new ComplexAdvertismentsQuery();
if (m.Success)
{
query.CityOrAreaName = m.Groups["city_country"].Value;
query.CountryName = m.Groups["city_country"].Value;
query.Price = Convert.ToDecimal(m.Groups["price"].Value);
}
else
return null;
ca。例如,必须只有1次,但单词"Agadir ca. ca. 600 eur"也是正确的,即使"ca."是2次。为什么?我不使用+或?
与前一个主题一样,它进入city_country
组。尝试用(?<city_country>[^.]+)
代替(?<city_country>.+)
。除了.
,其他都可以匹配。我猜你的city_country
里面不能有点吧?
。(Dot)计算Regex中的任何内容,甚至是导致问题的空格
所以你的匹配是:
-
@"(?<city_country>.+):Agadir ca.
-
(cca|ca.|ungefähr): ca.
-
(?<price>['d.,]+) (eur)?:600 eur
您需要匹配不使用点的城市名称,例如:
@"(?<city_country>[a-zA-Z]+) (cca|ca.|ungefähr) (?<price>['d.,]+) (eur)?"