Regex 正则表达式匹配一些包装文本
考虑以下案文:Regex 正则表达式匹配一些包装文本,regex,text,pcre,Regex,Text,Pcre,考虑以下案文: aas( I)f df (as)(dfdsf)(adf).dgdf(sfg).(dfdf) asdfsdf dsfa(asd #54 54 !fa.) sdf 我想在括号之间检索文本,但相邻括号应该考虑单个单元。我该怎么做 对于上述示例,所需输出为: (一) (as)(dfdsf)(adf) (sfg)。(dfdf) (asd#54!fa) 这一个应该可以做到: \([A-Za-z0-9]+\) 这一个应该做到: \([A-Za-z0-9]+\) 请尝试[^(\([^(
aas( I)f df (as)(dfdsf)(adf).dgdf(sfg).(dfdf) asdfsdf dsfa(asd #54 54 !fa.) sdf
我想在括号之间检索文本,但相邻括号应该考虑单个单元。我该怎么做
对于上述示例,所需输出为:
- (一)
- (as)(dfdsf)(adf)
- (sfg)。(dfdf)
- (asd#54!fa)
- 这一个应该可以做到:
\([A-Za-z0-9]+\)
这一个应该做到:
\([A-Za-z0-9]+\)
请尝试[^(\([^()]+([)](^[:alnum:]*)?[([^()]+)*\)[^)]
。捕获组1是您想要的
此表达式假定除括号外的每种字符都可能出现在括号之间的文本中,并且它与嵌套括号的部分不匹配。请尝试[^(\([^()]+([)](^[:alnum:][*)?[(][^()]+*)[^)]
。捕获组1是您想要的
此表达式假定除括号外的每种字符都可能出现在括号之间的文本中,并且它与嵌套括号的部分不匹配。我将使用:/(?:\(\w+\)(?:\(?=\())+/g
以匹配a-zA-Z0-9\内部的文字大括号\(\w+\)
仅当后面紧跟着另一个大括号时,才捕获文字(?:\。(?=\())?
- 将整个过程包装在
中,以将相邻捕获连接在一起(?:)+
/(?:\(\w+\)(?:\(?=\())+/g
以匹配a-zA-Z0-9\内部的文字大括号\(\w+\)
仅当后面紧跟着另一个大括号时,才捕获文字(?:\。(?=\())?
- 将整个过程包装在
中,以将相邻捕获连接在一起(?:)+
- 没有嵌套
,也没有逃逸()
()
- 括号通过
字符链接在一起,或者通过紧挨在一起(不允许灵活的间距)链接在一起
<> >(a)(b)(c)< /C> >考虑单个令牌(<代码> ./Cord>是可选的)。
\([^)]*\)(?:\.?\([^)]*\))*
请自行添加分隔符
解释
正则表达式的分解(间距不重要)。在#
之后和之后是注释,而不是正则表达式的一部分
\( # Literal (
[^)]* # Match 0 or more characters that are not )
\) # Literal ). These first 3 lines match an instance of wrapped text
(?: # Non-capturing group
\.? # Optional literal .
\([^)]*\) # Match another instance of wrapped text
)* # The whole group is repeated 0 or more times
假设
- 没有嵌套
,也没有逃逸()
()
- 括号通过
字符链接在一起,或者通过紧挨在一起(不允许灵活的间距)链接在一起
<> >(a)(b)(c)< /C> >考虑单个令牌(<代码> ./Cord>是可选的)。
\([^)]*\)(?:\.?\([^)]*\))*
请自行添加分隔符
解释
正则表达式的分解(间距不重要)。在#
之后和之后是注释,而不是正则表达式的一部分
\( # Literal (
[^)]* # Match 0 or more characters that are not )
\) # Literal ). These first 3 lines match an instance of wrapped text
(?: # Non-capturing group
\.? # Optional literal .
\([^)]*\) # Match another instance of wrapped text
)* # The whole group is repeated 0 or more times
(sfg)。(dfdf)
被认为是相邻的,即使在
之间?@Wiseguy是的,它被认为是。只有字母和数字不相交的括号第一个标记中有空格(I)
。你确定它有效吗?@NHAHDH是的,它有效。(dfdf)
被认为是相邻的,即使中间有
。@Wiseguy是的,它被认为是相邻的。只有字母和数字不相交的括号第一个标记中有空格(I)
。你确定它是有效的吗?@nhahdh是的,它是有效的。它不会因为它没有考虑括号中文本的邻接性而生效。它不会因为它没有考虑括号中文本的邻接性而生效。只是注意到你的问题是为了。显示了我有多注意,但正则表达式仍然有效!刚刚注意到你的问题是为了。显示了我的关注度,但正则表达式仍然有效!非常感谢,我使用了\([^)]*\(?:[^\pL]*?\([^)]*)*
非常感谢,我使用了\([^)]*)(?:[^\pL]*([^)]*)*