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;


我的搜索字符串是“ Agadir约600欧元”,但“ ca”。不是“ bis”或“ zu”,并且正则表达式也是如此。正则表达式有什么问题?我希望仅当单词“ bis”或“ zu”为正则表达式为真。

我觉得这很讨厌

?(bis|zu)?

最佳答案

删除(bis|zu)?中的问号。现在,.+<city_country>与价格匹配,并包含ca.

实际上,您可能希望将整个?(bis|zu)?部分更改为( bis| zu)

关于c# - 正则表达式问题C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6795205/

10-11 02:11