我有这个表达:
-a bp cd 4 -6 3 -n sig3 -p 0.5 0.7
我想匹配-a
到-n
之间的所有内容。这意味着前缀和后缀为:-
,带有一个字母。
我的开头是:(?<=-a )(?<ida>[^-]*)
但我还要把这封信排除在外。
请注意,-n可以是之前的任何其他字母,并且仅在运行时知道。
我该怎么做?
感谢所有的答案,我终于破解了它:
(?&lt; = - a)(?。*?(?= - [a-z] | $))
答案 0 :(得分:0)
你可以这样做:
(?<=-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
答案 1 :(得分:0)
如果我理解正确,你的模式是:
[^-]
或短划线,后跟不是字母-[^a-z]
的字符重复一次或多次,然后是-[a-z]
这个正则表达式应该这样做:
(?<=-a)([^-]|-[^a-z])+(?=-[a-z])