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

时间:2018-03-04 22:52:04

标签: python regex

您好我在pythex玩弄正则表达式,我遇到了麻烦。我试图采取以下字符串

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

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

2 个答案:

答案 0 :(得分: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相匹配,(.+?)匹配其间的所有文字,(?=\/\/)是正向前瞻,与两个{ {1}}&#39;第有关(.+?)(?=\/\/)的更多信息。

\/\/

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

答案 1 :(得分:0)

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

+
  • (?&lt; = RANDOM):查找以RANDOM开头的文本(lookbehind 断言)。
  • (?= //):查找文字后跟//(lookahead断言)。