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



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

[文本 1] 此处的文本示例 (ROBERT_01( 此处可能有更多文本 9999 然后文本 (JIMBO_01(

我正在尝试做的是删除第一组括号之后的所有内容,即"(ROBERT_01("。

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

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

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

编辑:请注意,我正在使用使用正则表达式的FME转换器"字符串替换器"。

您可以做的是一次或多次匹配不左括号,直到遇到使用否定字符类[^(]+的左括号。然后匹配左括号(,匹配不右括号零次或多次[^)]*然后匹配右括号)

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

然后使用K,以便以前使用的角色不再包含在最终匹配中。

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

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

正则表达式

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

正则表达式可以是

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

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

在在线正则表达式测试器中看到它

但也许你需要这个另一个,它只是匹配字符串开头的文本和用括号括起来的第一个文本

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

也可以在在线正则表达式测试器中看到它

相关内容

最新更新