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
这将在第一个匹配项中捕获括号之间的文本,在第二个匹配项中捕获其余文本,
但也许您需要另一个,它只匹配从字符串开头到括号括起来的第一个文本的文本
/^(.*?)\s?\(.*\).*$/
您可能要做的是不匹配左括号一次或多次,直到遇到使用取反 character class [^(]+
的左括号。然后匹配左括号 \(
,不匹配右括号零次或多次 [^)]*
然后匹配右括号 \)
.
这将匹配 [TEXT1] TEXT EXAMPLE HERE (ROBERT_01)
然后使用 \K
使之前消耗的字符不再包含在最终匹配中。
最终匹配任何字符零次或多次 .*
并且会匹配:
MORE TEXT HERE POSSIBLY SOME NUMBERS 9999 THEN TEXT (JIMBO_01)
正则表达式
这是我正在使用的字符串类型的示例:
[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
这将在第一个匹配项中捕获括号之间的文本,在第二个匹配项中捕获其余文本,
但也许您需要另一个,它只匹配从字符串开头到括号括起来的第一个文本的文本
/^(.*?)\s?\(.*\).*$/
您可能要做的是不匹配左括号一次或多次,直到遇到使用取反 character class [^(]+
的左括号。然后匹配左括号 \(
,不匹配右括号零次或多次 [^)]*
然后匹配右括号 \)
.
这将匹配 [TEXT1] TEXT EXAMPLE HERE (ROBERT_01)
然后使用 \K
使之前消耗的字符不再包含在最终匹配中。
最终匹配任何字符零次或多次 .*
并且会匹配:
MORE TEXT HERE POSSIBLY SOME NUMBERS 9999 THEN TEXT (JIMBO_01)
正则表达式