没有单词匹配的正则表达式

本文关键字:正则表达式 没有单 | 更新日期: 2023-09-27 18:33:41

>我有这个表达式:

-a bp cd 4 -6 3 -n sig3 -p 0.5 0.7

我想匹配从-a-n的所有.这意味着前缀和后缀是:-一个字母。

我有一个开始:(?<=-a )(?<ida>[^-]*)

但我还需要排除这封信。

请注意,-n 可以是任何其他字母,在它之前带有 - 并且仅在运行时知道。

我应该怎么做?

感谢所有的答案,我终于破解了它:
(?<=-a )(?.*?(?=-[a-z]|$))

没有单词匹配的正则表达式

如果我理解正确,你的模式是:

  • "-a"后跟
  • 任何不是短划线[^-]或短划线后跟非字母字符-[^a-z]重复一次或多次,后跟
  • 破折号和字母-[a-z]

这个正则表达式应该这样做:

(?<=-a)([^-]|-[^a-z])+(?=-[a-z])
你可以

这样做:

(?<=-a )(?>[^ ]+| (?!-n))*(?= -n)

此表达式的用途是避免惰性量词,并在开头和结尾修剪空格。

详:

(?<=-a )          # preceded by `-a `
(?>               # open an atomic group (non-capturing)
    [^ ]+         # all that is not a space
  |               # or
    [ ](?!-n)     # a space not followed by `-n`
)*                # repeat the group zero or more times
(?= -n)           # check if ` -n` follows