【问题标题】:Regex for alphanumeric word and should not be like RUN123456字母数字单词的正则表达式,不应像 RUN123456
【发布时间】:2017-09-22 12:58:11
【问题描述】:

我想对字符串应用正则表达式以获取字母数字值,并且该值不应以 RUN 子字符串开头,后跟任何数字,例如RUN123456.

下面是我用来获取字母数字值的正则表达式

regex='[A-Z]{2,}[_0-9a-zA-Z]*'

示例输入:

CY0PNI94980 Production AutoSys Job has failed. Call 249-3344. EC=54.  RUN130990.

匹配项可以包括CY0PNI94980EC,但不能包括RUN130990

请帮我解决这个问题。

【问题讨论】:

  • 为什么要避免匹配RUN130990?它有什么特别之处?您只想在字符串的开头匹配您的模式吗? ^[A-Z]{2,}[_0-9a-zA-Z]*?
  • 我想匹配字符串中任意位置的模式以及除 RUN****** 之外的值
  • 它工作...谢谢..

标签: regex pcre alphanumeric


【解决方案1】:

您可以匹配与您的模式匹配的字符串,不包括所有以RUN 和数字开头的字符串:

\b(?!RUN[0-9])[A-Z]{2,}[_0-9a-zA-Z]*

regex demo

如果您不关心是否匹配 Unicode 字母或数字,您可以将 [A-Za-z0-9_]\w 收缩并使用

\b(?!RUN[0-9])[A-Z]{2,}\w*

详情

  • \b - 单词边界
  • (?!RUN[0-9]) - 如果当前位置右侧有 RUN 和任何 ASCII 数字,则匹配失败
  • [A-Z]{2,} - 2 个或更多大写 ASCII 字母
  • [_0-9a-zA-Z]* / \w* - 0 个或多个单词字符(字母/数字/_)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多