#regex
Вопрос:
У меня есть такие предложения, как:
$COIN has a new price target increase to $400
Я хочу только $COIN
соответствовать регулярному выражению, мне интересно, как это сделать?
Если я сделаю что-то подобное .*\$.*
, это тоже совпадет $400
. Я просто хотел бы соответствовать $SOMEWORDNOSPACE
единственному. Возможно ли это?
Спасибо
Комментарии:
1. Попробуйте с
\$[A-Z] b
Ответ №1:
Если все, что после $ до конца слова, является заглавной буквой: $[A-Z]
Это будет соответствовать значению $ ( $
), а затем будет соответствовать заглавным буквам от 1 до бесконечности [A-Z]
. Совпадение прекращается, когда символ не вписывается в диапазон A-Z, поэтому b
в этом нет необходимости. Если совпадение не может начаться в середине предложения, с которого вы могли бы начать, B
чтобы оно начиналось при переключении символа слова на знак доллара, в этом случае регулярное выражение будет B$[A-Z]
Ответ №2:
Воспользуйся
(?<!S)$[A-Z] (?!S)
См. Доказательство
объяснение
--------------------------------------------------------------------------------
(?<! look behind to see if there is not:
--------------------------------------------------------------------------------
S non-whitespace (all but n, r, t, f,
and " ")
--------------------------------------------------------------------------------
) end of look-behind
--------------------------------------------------------------------------------
$ '
--------------------------------------------------------------------------------
[A-Z] any character of: 'A' to 'Z' (1 or more
times (matching the most amount possible))
--------------------------------------------------------------------------------
(?! look ahead to see if there is not:
--------------------------------------------------------------------------------
S non-whitespace (all but n, r, t, f,
and " ")
--------------------------------------------------------------------------------
) end of look-ahead