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;
ma chaîne de recherche est "Agadir environ 600 eur" mais "ca." n'est pas "bis" ou "zu" et regex est également vrai. Quel est le problème avec regex? Je veux que regex est vrai seulement si le mot "bis" ou "zu".problème regex C#
Je pense que cela worng
?(bis|zu)?
quelle est la différence entre (bis | zu) et (bis | zu) +. Est le même? – senzacionale
'(bis | zu) +' Correspondra à n'importe quelle séquence de 1 ou plus 'bis' ou' zu'. Quelque chose comme 'bis bis bis zu bis zu zu bis' correspondrait. EDIT: Ah, mais vous semblez enlever les espaces de la chaîne après, donc vous pouvez vous débarrasser de tous les espaces dans l'expression rationnelle. – Vache
thx. Pourquoi écrivez-vous alors? +? – senzacionale