>>> s = "[Hello|Hi]. We are [inviting | calling] you at position [[junior| mid junior]|senior] developer."
>>> import re
现在,试试:
^{pr2}$
更详细
考虑一下这个脚本:
$ cat script.py
import re
s = "[Hello|Hi]. We are [inviting | calling] you at position [[junior| mid junior]|senior] developer."
matches = re.findall(r'''\[ # Opening bracket
(?:[^][]* \[ [^][]* \])* # Zero or more non-bracket characters followed by a [, followed by zero or more non-bracket characters, followed by a ]
[^][]* # Zero or more non-bracket characters
\] # Closing bracket
''',
s,
re.X)
print('\n'.join(matches))
>>> import regex
>>> s = "[Hello|Hi]. We are [inviting | calling] you at position [[junior| mid junior]|senior] developer."
>>> r = regex.compile(r'\[(?:[^][]++|(?R))*]')
>>> print(r.findall(s))
['[Hello|Hi]', '[inviting | calling]', '[[junior| mid junior]|senior]']
>>>
x="[Hello|Hi]. We are [inviting | calling] you at position [[junior| mid junior]|senior] developer.[sd[sd[sd][sd]]]"
l=[]
st=[]
start=None
for i,j in enumerate(x):
if j=='[':
if j not in st:
start = i
st.append(j)
elif j==']':
st.pop()
if not st:
l.append(x[start:i+1])
print l
让我们定义您的字符串并导入:
现在,试试:
^{pr2}$更详细
考虑一下这个脚本:
这将产生输出:
您可以将以下代码与PyPi regex module一起与一个PCRE类似的
r'\[(?:[^][]++|(?R))*]'
regex一起使用:参见regex demo。在
\[(?:[^][]++|(?R))*]
匹配[
,然后是除]
和[
以外的零个或多个1+字符序列,或者是整个方括号表达式[...]
,然后是一个结束的]
。在您可以使用一个简单的
stack
来代替recursive regex
输出:
['[Hello|Hi]', '[inviting | calling]', '[[junior| mid junior]|senior]', '[sd[sd[sd][sd]]]']
相关问题 更多 >
编程相关推荐