你好我在pythex玩正规表达式,我遇到了麻烦。我正在尝试使用以下字符串
"RANDOM 1 ABBBABBBA SDFSBSBS WBWBSBW WBWBWBWB 10 EBEBEBEB EHRHSHSD EBWBBSHSHSB //"
并获取RANDOM和前锋斜杠之间的所有非数字字符。如何使用正则表达式执行此操作?救命!
这是一个可能的解决方案:
import re
s = 'RANDOM 1 ABBBABBBA SDFSBSBS WBWBSBW WBWBWBWB 10 EBEBEBEB EHRHSHSD EBWBBSHSHSB //'
pattern = r'(?<=RANDOM).*?(?=//)'
match = re.search(pattern, s)
textBetween = match.group(0)
notNumeric = re.sub(r'\d', '', textBetween)
print(notNumeric)
import re
text = 'RANDOM 1 ABBBABBBA SDFSBSBS WBWBSBW WBWBWBWB 10 EBEBEBEB EHRHSHSD EBWBBSHSHSB //'
for between_text in re.findall(r'(?<=RANDOM)(.+?)(?=\/\/)', text):
for word_match in re.findall(r'\b[^\d\W]+\b', between_text):
print(word_match)
输出:
ABBBABBBA
SDFSBSBS
WBWBSBW
WBWBWBWB
EBEBEBEB
EHRHSHSD
EBWBBSHSHSB
(?<=RANDOM)(.+?)(?=\/\/)
:
(?<=RANDOM)
是正面的背后,它在文本之前匹配RANDOM
,(.+?)
匹配其间的所有文本和(?=\/\/)
是正向前瞻,它匹配两个\/\/
的。关于(.+?)(?=\/\/)
的更多信息。
\b[^\d\W]+\b
:
\b
匹配单词边界,[^\d\W]+
是一个与数字和非单词匹配的否定集(因此它匹配非数字和单词); +
表示它匹配一个或多个字符。