正则表达式在圆括号内提取单词

时间:2016-04-13 16:06:51

标签: regex

我已经被这个正则表达式问题困扰了很长时间了。 我有以下字符串。

[{"op": "replace", "path": "/endDate", "value": "#{$PurchaseOrderExtensions.findOne(_extid).getEndDate().toString()}"}]

我完全不知道如何提取圆括号内的单词_extid。令人困惑的部分是有许多圆括号。我需要在findOne出现之后仅提取一个。

我尝试了以下正则表达式,但它们都没有匹配字符串以在findOne之后提取一个。

/\{(\(\w+\))\}/?
/\\((\\w+)\\)/?
and many more...

我在这做什么错?

4 个答案:

答案 0 :(得分:1)

您可以在正则表达式中找到 findOne

findOne\((\w+)\)

然后你可以从内部捕获组获取你的字符串。

答案 1 :(得分:1)

'(?<=findOne)\(.*?\)'

示例

grep -Po '(?<=findOne)\(.*?\)' file

grep -Po 'findOne\K\(.*?\)' file

答案 2 :(得分:0)

为什么您只是在表达中加入findOne

像:

/\.findOne\((.*?)\)/

取决于语言和用法,您可能需要加倍反斜杠,或者如上所述 - 只需使用JSON解析器

答案 3 :(得分:0)

你能用这样的东西捕捉圆括号内的内容:

\([a-z1-9_]*\)