我有这个表达:
-a bp cd 4 -6 3 -n sig3 -p 0.5 0.7
我想匹配所有从-a
to -n
。这意味着前缀和后缀是:-
一个字母。
我有一个开始:(?<=-a )(?<ida>[^-]*)
但我也需要排除这封信。
请注意,-n 可以是任何其他带有 - 的字母,并且仅在运行时知道。
我该怎么做?
感谢所有的答案,我终于破解了它:
(?<=-a )(?.*?(?=-[az]|$))
你可以这样做:
(?<=-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
如果我理解正确,您的模式是:
[^-]
或破折号后跟一个不是-[^a-z]
重复一次或多次的字母的字符,然后是-[a-z]
这个正则表达式应该这样做:
(?<=-a)([^-]|-[^a-z])+(?=-[a-z])