Исключить строку из регулярного выражения в C # - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть следующий re, использующий класс c # regex:

[^\r\n]+[^,"condicionesDePago"]

поиск в следующем тексте:

"CREDITO 30 DIAS", "condicionesDePago"

Я хочу получить левую часть, в данном случае: "КРЕДИТО 30 ДИАС" но я получаю только: "КРЕДИТО 30

чтоя пропал?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Похоже, вы неправильно поняли, для чего используется класс персонажа. Он действует не на слова, а на отдельных персонажей. Эта часть вашего шаблона [^,"condicionesDePago"] указывает, что символ должен соответствовать, если это , а не запятая, двойные кавычки или указанный алфавит в этом слове.

Вы, вероятно, намеревались использовать предварительный просмотр:

@"[^\r\n]+(?=,""condicionesDePago"")"

С другой стороны, это можно записать следующим образом и не будет соответствовать \n, если RegexOptions.Singleline не указано (но оно может соответствовать \r):

@".+?(?=,""condicionesDePago"")";
0 голосов
/ 06 декабря 2011

Если вы всегда ожидаете, что текст будет в формате, указанном выше, то вы можете явно указать в своем совпадении:

   "(\w+ [0-9]+ \w+)"(?=,"condicionesDePago")

Это должно соответствовать кредиту 30 дней (т. Е. Шаблон букв буквы цифры - \w + [0-9] * \ w +), за которым следует condicionesDePago - (? =, "condicionesDePago") - называется положительным взглядом.

Я всегда использую http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx для проверки своих регулярных выражений, ноМогу поспорить, что и у других людей есть свои любимцы.

...