寻找一些正则表达式,它将为括号内出现的单词创建一个捕获组,忽略括号本身。正则表达式必须是PCRE或ICU。
输入:( lakshd asd___ asa1123 Name : _____)
所需输出:Name
我尝试了什么:
\\((Name|name|NAME)\\)
(?<=\\()name|Name|NAME(?=\\))
\\(name|Name|NAME\\)
答案 0 :(得分:1)
我尝试了什么:
\\((Name|name|NAME)\\)
(?<=\\()name|Name|NAME(?=\\))
\\(name|Name|NAME\\)
所有这些模式都会查找name
或Name
或NAME
之前立即(
<{1}} 右之后,差别是被捕获或作为匹配返回的内容。要匹配括号内的某些字词,您需要在需要获得的值之前使用)
,并在之后使用\([^()]*
。
此外,提取您已经知道的内容毫无意义。
因此,如果您打算从括号中提取最后一个单词,则可以使用
[^()]*\)
请注意,> library(stringr)
> s = "( lakshd asd___ asa1123 Name : _____)"
> res <- str_match(s, "(?i)\\([^()]*\\b([a-z]\\w*)\\b[^()]*\\)")
> res[,2]
[1] "Name"
允许访问捕获的值。
str_match
模式匹配括号和它的最后一个整数字。
答案 1 :(得分:0)
如果不太可能发生嵌套的括号级别,那么查看当前位置是否会在结尾处跟随一个右括号,同时应该打开一个左括号将会起作用(适用于ICU和PCRE):
(Name|name|NAME)(?=[^()]*\))