python中的regex:匹配两个单词之间的任何非数字字符

2024-10-06 10:33:58 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我在玩pythex中的正则表达式,遇到麻烦了。我试着拿下下面的绳子

"RANDOM 1 ABBBABBBA SDFSBSBS WBWBSBW WBWBWBWB 10 EBEBEBEB EHRHSHSD EBWBBSHSHSB //"

抓取随机斜杠和正斜杠之间的所有非数字字符。如何使用正则表达式实现这一点?救命啊!在


Tags: 数字random字符斜杠绳子pythexabbbabbbaebwbbshshsb
2条回答

这是一个可能的解决方案:

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) 
  • (?<;=RANDOM):查找前面有RANDOM(lookbehind)的文本 断言)。在
  • (?=//):查找后跟//(lookahead断言)的文本。在
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)

输出:

^{pr2}$

(?<=RANDOM)(.+?)(?=\/\/)

(?<=RANDOM)是正lookbehind,它匹配文本前面的RANDOM(.+?)匹配中间的所有文本,(?=\/\/)是正前瞻,这与两个\/\/匹配。有关^{}的更多信息。在

\b[^\d\W]+\b

\b匹配单词边界,[^\d\W]+是一个匹配数字和非单词的集(因此它匹配非数字和单词);+表示它匹配一个或多个字符。在

相关问题 更多 >