【问题标题】:RegEx ignore letters until digit occurs and then match letters afterwards [duplicate]正则表达式忽略字母,直到出现数字,然后匹配字母[重复]
【发布时间】:2019-10-15 00:23:36
【问题描述】:

这是为了在 Java 中使用。 想象以下示例输入:

WRA1007
1085808
1092650S
3901823CV

我想匹配至少一位数字后的所有字母字符

期望的输出:

S
CV

实际输出:

0S
3CV

我目前的做法是这样的:

\d[a-zA-Z]+

这种模式的问题在于它也预先包含了数字。我目前的解决方案是之后删除结果字符串的第一个字符。这对我来说似乎很不满意。

【问题讨论】:

标签: java regex


【解决方案1】:

你需要回顾一下:

(?<=\d)[a-zA-Z]+

(?&lt;=\d)的意思是“这个位置之前必须有一个数字,但是不要匹配”。

Demo

或者,您可以使用一对() 包围您想要获取的部分:

\d([a-zA-Z]+)

这称为“组”,您可以通过在您的Matcher 上调用group(1) 来获取它的值。

【讨论】:

  • 附注:\d([a-zA-Z]+) 与 java 一起使用时,开头需要另一个反斜杠。否则它是一个无效的转义序列。不过效果很好!
【解决方案2】:

如果您“添加”组,您可以获得仅包含字母的组 1

\d([a-zA-Z]+)

【讨论】:

    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 2021-10-09
    相关资源
    最近更新 更多