python中的正则表达式:匹配两个单词之间的任何非数字字符

问题描述 投票:-2回答:2

你好我在pythex玩正规表达式,我遇到了麻烦。我正在尝试使用以下字符串

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

并获取RANDOM和前锋斜杠之间的所有非数字字符。如何使用正则表达式执行此操作?救命!

python regex
2个回答
0
投票

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

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断言)。

0
投票
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]+是一个与数字和非单词匹配的否定集(因此它匹配非数字和单词); +表示它匹配一个或多个字符。

© www.soinside.com 2019 - 2024. All rights reserved.