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

时间:2018-04-30 21:34:59

标签: regex pcre

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

  

[TEXT1]这里的文字示例(ROBERT_01)这里有更多文字可能有9999个文字(JIMBO_01)

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

在您使用否定的character class [^(]+遇到左括号之前,您可能会做的是匹配不是左括号一次或多次。然后匹配左括号\(,匹配不是右括号的零{或更多次[^)]*,然后匹配右括号\)

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

然后使用\K,因此以前消费的字符不再包含在最终匹配中。

最后匹配任何字符零次或多次.*并匹配:

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

<强>正则表达式

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

答案 1 :(得分:0)

正则表达式可以是

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

这将捕获第一场比赛中括号内的文字和第二场比赛中的剩余文字

online regex tester

上查看

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

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

另见online regex tester