У меня есть регулярное выражение .net (и я должен использовать регулярное выражение), которое в настоящее время работает, просто сопоставляя любые символы без слов между группами захвата (которые захватывают тест для перехода к методу).Regex: Lookahead, а затем lookbehind from lookahead position
В большинстве случаев он работает нормально, но в случае, когда текст, передаваемый методу, является отрицательным числом, совпадение слов не использует знак минуса и передает положительный номер методу. Чтобы усложнить ситуацию, символы без слов между группами захвата могут содержать текст типа «-», который должен быть использован. Текст также может быть значением валюты, например «200 долларов США», и в этом случае также следует использовать «$».
То, что я пробовал, состояло в том, чтобы потреблять символы без слов, пока не последовало цифра, а затем проверьте, не было ли это число чем-то иным, кроме знака минус, и только потреблять, если это было. Мое регулярное выражение для этого было:
\W+(?!\d(?<![^-]))
однако это не похоже на работу, как я ожидаю, как это до сих пор кажется потреблять мой знак минус, в результате чего положительного числа передается на мой метод.
Неправильно ли мое регулярное выражение? Или я не могу заглянуть вперед, а потом посмотреть на заднее положение?
Как я могу получить желаемый результат, что этот текст: только
" -100"
матчи пробелы в начале. И этот текст:
" $200"
соответствует пробелу и знаку $.
и этот текст:
" - 100"
соответствует пробел, знак минус и после пробела, а не количество.
Пример можно найти here
Похоже вы можете использовать '\ W + (?! (?