我有一个来自这些字符串的字符串 test01、abcd02、xyz05,我的最后 2 个字符始终是数字。从这些字符串中,我想要一个正则表达式来捕获 test、abcd、xyx。你能建议一下如何捕捉它吗
您的字符串是否可以多于或少于 2 位数字? 如果它固定为两位数,那么为什么不直接删除最后 2 个字符 并且不使用正则表达式?是因为我们必须验证这一点吗 输入?
如果您不应该匹配不以数字结尾的字符串,则不要使用 评论中提出的解决方案
(.*)..$
与任何字符匹配
例如,您会从“Hello”中得到“Hel”。我个人会更精确,并且只考虑文字,
以避免匹配“12345”或“!#@123”之类的内容。
我建议这样:
.
说明:
最后的
/^(\p{L}+)\d+$/u
unicode 的,这样你就可以处理 特殊字符,例如表情符号或其他特殊字符,不知道 您输入的文字是什么。 通过
u
匹配,
这意味着L字母。与
\p{L}
大致相同,但处理方式不同
多个代码点序列。如果字符串末尾必须是数字,则可以使用 \w
\d+
。
\d{2}
使用 PCRE,你会得到相同的结果:
https://regex101.com/r/bvY3dg/1