одинарное или регулярное выражение - PullRequest
0 голосов
/ 20 июня 2010

9.jul. 3 дня 205,00 EUR

Возможно ли с одним регулярным выражением (match opr split) получить 205,00 число из строки? Это должно быть одно регулярное выражение, а не 2 или 3 регулярных выражения, которые в результате дают 205,00.

строка выглядит так:

 <option value="9.7.2010|3">9.jul. 3 dni od 205,00&nbsp;EUR <option value="23.7.2010|3">23.jul. 3 dni od 205,00&nbsp;EUR <option value="27.8.2010|3">27.avg. 3 dni od 205,00&nbsp;EUR <option value="10.9.2010|3">10.sep. 3 dni od 205,00&nbsp;EUR <option value="24.9.2010|3">24.sep. 3 dni od 205,00&nbsp;EUR <option value="29.10.2010|3">29.okt. 3 dni od 205,00&nbsp;EUR <option value="25.3.2011|3">25.mar. 3 dni od 205,00&nbsp;EUR <option value="15.4.2011|3">15.apr. 3 dni od 205,00&nbsp;EUR </select>

Ответы [ 4 ]

1 голос
/ 20 июня 2010

&nbsp;, скорее всего, будет преобразован в ASCII 160 (html декодированный), который не совпадает с пробелом.Использование \ s + не будет совпадать ни с пробелами, ни с нормальным пробелом, символом табуляции и перевода строки / возврата каретки.

Если он не декодирован, вы можете использовать &nbsp; вместо \ s +.

(\d+,\d+)\s+EUR
1 голос
/ 20 июня 2010

Здесь возможны две проблемы

Пространство

Это пробел (ASCII 32) или &nbsp;? Или, может быть, это просто какой-нибудь символ \s?


Часть матча

Я собираюсь предположить, что это просто обычное пространство. Если это не так, замените его следующим образом.

Чтобы соответствовать только части чисел, вы можете использовать \d+,\d\d(?= EUR). При этом используется lookahead (?=___), поэтому вы соответствуете только той части, которая вас интересует.

Другой вариант - сопоставить (\d+,\d\d) EUR, а затем извлечь Groups[1].

Похожие вопросы

Ссылки

1 голос
/ 20 июня 2010

Ваша попытка (\d+,\d\d) EUR (надеюсь, вы на самом деле не набирали &nbsp;) должна сработать, но вам нужно получить доступ к группе 1 из результата, чтобы получить только то, что в скобках.Например:

Regex regex = new Regex(@"(\d+,\d\d) EUR");
Match match = regex.Match("9.jul. 3 dni od 205,00 EUR");
string cashString = match.Groups[1].Value;
1 голос
/ 20 июня 2010

Возможно

(\d+,\d\d) EUR$

Вы не указали, как вообще выглядит объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...