Python 正则表达式帮助,匹配字母前的所有内容

0 投票
2 回答
526 浏览
提问于 2025-04-16 10:21

测试用例:

22 s    # 22
1.4 I   # 1.4
4.4.5 Apple    # 4.4.5
1993    # 1993

我想要的就是在[A-z]或[a-z]之前的所有内容

谢谢

2 个回答

1

我猜你是想去掉末尾的空格,所以当你匹配“22 s”时,得到的结果是“22”,而不是“22 ”:

>>> regex = r"^([^A-Za-z]+?)\s*(?:[A-Za-z]|$)"
>>> for input, expected in [
...   ("22 s", "22"),
...   ("1.4 I", "1.4"),
...   ("4.4.5 Apple", "4.4.5"),
...   ("1993", "1993"),
...   ("1993 ", "1993"),
...   ("1 2 3 a", "1 2 3"),
...   ("1 2 3 ", "1 2 3"),
... ]:
...   assert re.match(regex, input).group(1) == expected
...
>>> # no AssertionError means success

或者,你可以匹配“^([^A-Za-z]+)”,然后再去掉末尾的空格。

1

试试这个正则表达式:

r'^[^a-zA-Z]+'

撰写回答