我有一个字符串块,如下所示
1. While #EngineSpeed$b4tgup#
2. While #AcceleratorPedal$desddd# <=2
3. While #AcceleratorPeda@$desddd# <=2
4. While #AcceleratorPe#al$desddd# <=2
5. While #AcceleratorP@dal$desddd# <=2
6. While #AcceleratorPeda l$desddd# <=2
7. 设置 #AcceleratorPedal$y6qs8m#=@AcceleratorPedal+0.06
8. 设置 #WaitStart$jhx0vu#=11
9. 设置 #WaitStart$jhx0vu#^11
10. 设置 #WaitStart$jhx0vu#_11
11. 设置 #WaitStart$jhx0vu#-11
12. 设置 #AcceleratorQuora$yd6ba3#=1
13. 设置 #AcceleratorQuora$yd6bd3#=1
14.
15. Check #EnginePower#
16. While #EngineSpeed
17. set #WaitStart
18. set #WaitStart<13
19. set #WaitStart<=13
20. set #WaitStart <= 13
现在我希望有一个正则表达式来匹配一个以#
开头的子字符串,但不跟#
后跟,或者不跟这个$\w{6}#
这样的子字符串。
所以在上面的字符串块中只有第16,17,18,19,20行匹配,第16行的结果是 #EngineSpeed ,第17行的结果是 #WaitStart < / strong>,其他不匹配,在第20行,结果也是 #WaitStart ,后跟<= 13
,后面跟#
或{{1} },所以它也匹配!
例如,在第15行中,字符串是检查#EnginePower#,它以$\w{6}#
开头,但后跟#
,第13行字符串为< strong>设置#AcceleratorQuora $ yd6bd3#= 1 ,它以#
开头,后跟一个像#
这样的子字符串。
我写了一个像$\w{6}#
这样的正则表达式,但是RegexBuddy中的测试结果如下图所示,几乎每一行都匹配,它不符合我的要求,我怎样才能修改正则表达式?提前谢谢!
答案 0 :(得分:2)
从您想要匹配的上述所有字符串
- #EngineSpeed
- 设置 #WaitStart
- 设置 #WaitStart &lt; 13
- 设置 #WaitStart &lt; = 13
- 设置 #WaitStart &lt; = 13
醇>
您可以使用
(?<=\s)#\w+(?!.*[@$#])
<强>详情:
(?<=\s)
- 之前必须有空格...... #
- 文字哈希\w+
- 一个或多个单词字符(?!.*[@$#])
- 如果该行@
之后的某处有$
,#
或\w+
,则匹配失败。