正则表达式问题c#
本文关键字:问题 正则表达式 | 更新日期: 2023-09-27 18:03:30
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)
而"Agadir ca. 600"是假的,而"Agadir ca. 600 eur"是真的。"eur"是可选的,但"Agadir ca. 600"是假的?为什么?
将eur
用圆括号括起来,如(eur)?
。
?
匹配前一个字符 0次或1次。通过将其括在父括号中,它将匹配整个单词。
也可能匹配(eur)?
前面的最后一个空格。试试这个:
@"(?<city_country>[^.]+) (cca|ca.|ungefähr) (?<price>['d.,]+)('seur)?"
's
,它匹配任何空白,包括空格,制表符,form-feed等
我认为你应该写(eur)?
而不是eur?
。例如,将空格放在括号
@"(?<city_country>[^.]+) (cca|ca.|ungefähr) (?<price>['d.,]+)( eur)?"
OR
@"(?<city_country>[^.]+) (cca|ca.|ungefähr) (?<price>['d.,]+)('seur)?"
使用(欧元)?而不是eur?应该解决这个问题。
最好的方法是CC_10将空格只放在里面,就像(eur)不匹配像"Agadir ca. 600"这样的东西