正则表达式帮助捕获除 PCRE 中最后 2 个字母之外的字符串

问题描述 投票:0回答:1

我有一个来自这些字符串的字符串 test01、abcd02、xyz05,我的最后 2 个字符始终是数字。从这些字符串中,我想要一个正则表达式来捕获 test、abcd、xyx。你能建议一下如何捕捉它吗

regex regex-group pcre
1个回答
0
投票

您的字符串是否可以多于或少于 2 位数字? 如果它固定为两位数,那么为什么不直接删除最后 2 个字符 并且不使用正则表达式?是因为我们必须验证这一点吗 输入?

如果您不应该匹配不以数字结尾的字符串,则不要使用 评论中提出的解决方案

(.*)..$
与任何字符匹配 例如,您会从“Hello”中得到“Hel”。
我个人会更精确,并且只考虑文字,
以避免匹配“12345”或“!#@123”之类的内容。

我建议这样:

.

说明:

最后的
    /^(\p{L}+)\d+$/u
  • 标志是针对
    u
    nicode 的,这样你就可以处理 特殊字符,例如表情符号或其他特殊字符,不知道 您输入的文字是什么。 通过
  • PCRE
  • ,您可以使用 unicode 字符类。 这可以帮助您将任何语言中的单词字符与 u 匹配, 这意味着
    L
    字母。与 \p{L} 大致相同,但处理方式不同 多个代码点序列。
    如果字符串末尾必须是数字,则可以使用 
  • \w
  • 。如果它 确实必须只有 2 位数字,然后将其替换为
    \d+
    
    

\d{2}

使用 PCRE,你会得到相同的结果:

https://regex101.com/r/bvY3dg/1

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