Как сопоставить шаблон, не состоящий из слов, только если за ним сразу не следует конкретный символ

Я пытаюсь сопоставить \w+,\w+ выражения, если сразу за ними не следует (

Итак, чтобы привести пример, я ищу регулярное выражение, которое соответствует таким выражениям, как

X_11,A и Y,C_A, но не XNR,B и Y,A в таких строках, как

X_11,A+0.7*Y,A(-12)-0.3(XNR,B(-1)-Y,C_A)

Я пробовал различные решения, предложенные в связанных сообщениях, которые используют отрицательный прогноз. Но в лучшем случае сопоставляется только последний термин Y,C_A (через (\w*,\w*)(?!.*\()), но очевидно, что он смотрит слишком далеко вперед для более ранних условий. Прямолинейный (\w*,\w*)(?!\() по-прежнему захватывает XNR,, чего я не хочу. Я также пробовал более сложные решения. Похоже, что они используют определенные особенности проблемы, например, что есть только один интересующий термин в строке, постоянные подстроки, границы слов и т.д. Что мне не хватает?


person BrsG    schedule 26.02.2020    source источник
comment
Используйте \w+,\w+(?![(\w]) или \w+,\w+\b(?!\()   -  person Wiktor Stribiżew    schedule 26.02.2020
comment
Оба работают. Спасибо!   -  person BrsG    schedule 26.02.2020