假设我有这个字符串:
Alpha+*&Numeric%$^String%%$
我想获取字母数字字符之间的非字母数字字符:
+*& %$^
我有这个正则表达式:[^0-9a-zA-Z]+
但它给了我
+* %$^ %%$
其中包括我不想要的拖尾非字母数字字符。我也尝试过 [0-9a-zA-Z]([^0-9a-zA-Z])+[0-9a-zA-Z]
但它给了我
a+*&N c%$^S
包括字符a
、N
、c
和S
最佳答案
如果您不介意将 _
字符包含为字母数字数据,您可以使用以下方法提取所有非字母数字数据:
some_string = "A+*&N%$^S%%$"
import re
result = re.findall(r'\b\W+\b', some_string) # sets result to: ['+*&', '%$^']
请注意我使用的是 \b
而不是 \w
或 [^\W]
。
\w
和 [^\W]
各匹配一个字符,因此如果您的字母数字字符串(在您想要的文本之间)恰好是一个字符,则你认为应该是下一场比赛的比赛不会比赛。
但是因为 \b
是一个零宽度的“单词边界”,所以它不关心有多少个字母数字字符,只要至少有一个即可。
关于python - 正则表达式获取字母数字字符串之间的非字母数字字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56172951/