正则表达式问题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