REGEX PCRE - 避免字符串和括号内任何字符串的第一个实例

REGEX PCRE - Avoid string and the first instance of any string within a parenthesis

这是我正在使用的字符串类型的示例:

[TEXT1] TEXT EXAMPLE HERE (ROBERT_01) MORE TEXT HERE POSSIBLY SOME NUMBERS 9999 THEN TEXT (JIMBO_01)

我想做的是删除第一组括号后的所有内容,即“(ROBERT_01)”。

我可以在明确说明文本本身的同时让它工作,例如:

(?<=TEXT EXAMPLE HERE \(ROBERT_01\)).+

然而,这是有问题的,因为括号之间的字符串并不总是 "ROBERT_01"。

编辑:注意,我正在使用利用正则表达式的 FME 转换器 'StringReplacer'。

正则表达式可以是

/\(.*?\)(.*?)$/gm

这将在第一个匹配项中捕获括号之间的文本,在第二个匹配项中捕获其余文本,

online regex tester

但也许您需要另一个,它只匹配从字符串开头到括号括起来的第一个文本的文本

/^(.*?)\s?\(.*\).*$/

另见 online regex tester

您可能要做的是不匹配左括号一次或多次,直到遇到使用取反 character class [^(]+ 的左括号。然后匹配左括号 \(,不匹配右括号零次或多次 [^)]* 然后匹配右括号 \).

这将匹配 [TEXT1] TEXT EXAMPLE HERE (ROBERT_01)

然后使用 \K 使之前消耗的字符不再包含在最终匹配中。

最终匹配任何字符零次或多次 .* 并且会匹配:

MORE TEXT HERE POSSIBLY SOME NUMBERS 9999 THEN TEXT (JIMBO_01)

正则表达式

[^(]+\([^)]*\)\K.*