正则表达式问题C#
正则表达式问题C#,c#,regex,C#,Regex,Agadir ca.成为您的城市/国家和(bis | zu)?部分被跳过,因为您已经用?将其标记为不需要。Agadir ca.成为您的城市/国家和(bis | zu)?零件被跳过,因为您已使用?将其标记为非必需零件。看起来这是因为您将bis和zu设置为可选的。尝试将(bis | zu)更改为(bis | zu)这似乎是因为您将bis和zu设置为可选。尝试将(bis|zu)更改为(bis|zu)删除(bis|zu)中的问号。就目前而言,的+与价格匹配,包括ca. 事实上,您可能希望将整个?(bis
Agadir ca.
成为您的城市/国家
和(bis | zu)?
部分被跳过,因为您已经用?
将其标记为不需要。Agadir ca.
成为您的城市/国家
和(bis | zu)?
零件被跳过,因为您已使用?
将其标记为非必需零件。看起来这是因为您将bis和zu设置为可选的。尝试将(bis | zu)
更改为(bis | zu)
这似乎是因为您将bis和zu设置为可选。尝试将(bis|zu)
更改为(bis|zu)
删除(bis|zu)
中的问号。就目前而言,
的+
与价格匹配,包括ca.
事实上,您可能希望将整个
?(bis | zu)
部分更改为(bis | zu)
删除(bis | zu)
中的问号。就目前而言,
的+
与价格匹配,包括ca.
事实上,您可能希望将整个?(bis | zu)
部分更改为(bis | zu)
(?。+)?(bis | zu)?(?[\d,]+)欧元
^ ^
1 2
?
属于前面的空格?
属于(bis|zu)
?
使前面的表达式成为可选的(?。+)?(bis|zu)?(?[\d,]+)欧元
^ ^
1 2
?
属于前面的空格?
属于(bis|zu)
在这两种情况下,
?
使前面的表达式成为可选的,也是因为他标记了城市与国家之间的空间(bis | zu)?作为可选。删除可选的空格也会导致匹配失败。很难说,他对RemoveSpacesFromString
的调用会让你认为字符串无论如何都不会有空格。但这是一个很好的观点。也因为他标记了城市与乡村之间的空间?作为可选。删除可选的空格也会导致匹配失败。很难说,他对RemoveSpacesFromString
的调用会让你认为字符串无论如何都不会有空格。但这是一个很好的观点,(bis|zu)和(bis|zu)+有什么区别。是否相同?(bis | zu)+
将匹配1个或多个'bis'或'zu的任何序列。类似于
bis bis zu bis zu bis`的东西会匹配。编辑:啊,但是你后来似乎从字符串中删除了空格,这样你也可以去掉正则表达式中的所有空格。我的意思是(?。+)
中的+
是匹配ca.
的部分,因为它匹配任何字符中的一个或多个。(?。+)
匹配“Agadir ca.
”(cca | ca.| ungefähr)
匹配第二个ca.
和(?[\d,]+)(eur)?
匹配600 eur
。从(bis | zu)到(bis | zu)+有什么区别?相同吗?(bis | zu)+
将匹配1个或多个'bis'或'zu的任何序列。类似于
bis bis zu bis zu bis'的内容将匹配。编辑:啊,但是您似乎在之后从字符串中删除了空格,以便您也可以删除正则表达式中的所有空格。我指的是(?。+)中的+
是匹配ca.
的部分,因为它匹配任何字符中的一个或多个。(?。+)
匹配“Agadir ca.
<代码>(cca | ca.| ungefähr)匹配第二个ca.
和(?[\d,]+)(eur)?
匹配600 eur
。
const string strRegex = @"(?<city_country>.+) ?(bis|zu)? (?<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.CountryName = m.Groups["city_country"].Value;
query.CityOrAreaName = m.Groups["city_country"].Value;
query.PriceFrom = Convert.ToDecimal(1);
query.PriceTo = Convert.ToDecimal(m.Groups["price"].Value);
}
else
return null;
return query;
?(bis|zu)?
(?<city_country>.+) ?(bis|zu)? (?<price>[\d.,]+) eur
^ ^
1 2