我正在尝试匹配字符串中的模式,其中字符串在单词和数字之间交替(例如“apple 123 Orange 4567”),单词只能包含字母(大写和小写),数字可以有不同的长度,但必须仅包含数字。
示例:
apple 123 orange 4567
banana 8 pineapple 999
但我想排除一些情况,例如,
apple123 4567, 123apple 123
所以...
我尝试过
\b[a-zA-Z]+\s\d+\b
。这适用于单个单词-数字对,但它不能确保整个字符串在单词和数字之间交替。此外,它不会阻止像 apple123 或 123apple 这样的序列。如何修改正则表达式以确保字符串在单词和数字之间交替,排除混合的单词数字序列并在整个字符串(而不仅仅是孤立的对)中匹配此模式?
你的正则表达式有效。很可能是你的 Python 代码不正常。我猜你忘记了 r 字符串的
r
。
import re
test_cases=["apple 123 orange 4567", "apple123 4567, 123apple 123"]
for test_case in test_cases:
x = re.findall(r"\b[a-zA-Z]+\s\d+\b", test_case)
if not x:
print("no match in " + test_case)
for word in x:
print(word)