Regex 如何在包含字母、数字或数字的单词之前获得正确的字符串

Regex 如何在包含字母、数字或数字的单词之前获得正确的字符串,regex,Regex,我有一个字符串,它包含一个字符串和一个以字母和/或数字结尾的序列 我希望在没有大写字母和/或数字的情况下匹配整个文本,但如果它们根本不存在,也能够匹配整个文本 如果我想检查以下单词是否由字母和/或数字组成,那么在这种情况下应如何进行前瞻性检查 文本案例如下: “绿色氛围100AG2” “绿色氛围100A2 102” “绿色氛围1003” “绿色氛围AFDF12” 或 “Green Ambience”(在本例中,我当前只匹配“Green”,但如果最后没有垃圾,我会想要整个字符串) 预期结果: “绿

我有一个字符串,它包含一个字符串和一个以字母和/或数字结尾的序列

我希望在没有大写字母和/或数字的情况下匹配整个文本,但如果它们根本不存在,也能够匹配整个文本

如果我想检查以下单词是否由字母和/或数字组成,那么在这种情况下应如何进行前瞻性检查

文本案例如下:

“绿色氛围100AG2”

“绿色氛围100A2 102”

“绿色氛围1003”

“绿色氛围AFDF12”

“Green Ambience”(在本例中,我当前只匹配“Green”,但如果最后没有垃圾,我会想要整个字符串)

预期结果: “绿色氛围”

当前正则表达式: (.*(=\s))


希望有人能教我lookaheads如何检查字母和数字的混合(或仅检查数字)-目前只检查最后一个空格,但如果它的行结束,或者如果我们理论上得到“绿色氛围10A01 102”,而我仍然只想要“绿色氛围”,那么这就行不通了

您希望匹配到至少包含一个数字的字母数字字符串或字符串末尾的ALLCAPS单词开始出现的点

因此,您可以将其用于匹配:

^(.*)(:\s+[a-zA-Z]*\d.*)$
看。如果可以使用regex replace方法,则可以使用以下方法:

\s+[a-zA-Z]*\d*

详情:

  • ^
    -字符串的开头
  • (.*)
    -捕获组1:除换行符以外的任何零个或多个字符,尽可能少
  • (?:\s+[a-zA-Z]*\d.?)
    -可选出现的
    • \s+
      -一个或多个空格
    • [a-zA-Z]*\d
      -至少包含一个数字的字母数字字符串
    • *
      -字符串的其余部分
  • $
    -字符串结束
您可以使用正则表达式:

(/([A-Za-z]*)?(\w?\s?*)/)[1]


这个正则表达式将只匹配没有字母和/或数字序列的字符串。

它工作得很好,但是如果我得到“Green Ambience 1002A NEWWORD”,我会看到问题,然后我会得到整个匹配again@SteffenMandrup更新了这两种方法。很抱歉让人恼火,但现在如果它的大写字母不匹配(我知道我的例子是这样的)但是如果它的“Green Ambience 1002A”是一个新词呢?@SteffenMandrup那么,让我猜猜:你想要
Green Ambience 1002A aaa
中的
Green Ambience 1002A
?通常我想要100A、1001等之前的正确文本。后面的内容应该被忽略