我尝试匹配一个简单的模式P1(空格或制表符,然后##然后是文本):
[ \t]*##\S*
但有时,我想与另一个模式P2(无论是空格还是制表符,然后是##然后是文本)匹配:
[^ \t]*##\S*
当## \ S *跟随\ S * 时,必须使用P2
否则必须使用P1
预期匹配结果的示例:
##foo
must give
##foo
##foo (6 whitespaces before pattern)
must give
##foo (because there is some whitespaces before the pattern ##foo and not any non-whitespace characters)
foo ##bar
must give
##bar (because there is some non-whitespace charecters before the pattern ##foobar)
foo bar ##foobar
must give
##foobar
我尝试了lookbehind方法,但这是不可能的,因为没有固定的大小。
如果有人能帮助我,那将是非常好的......
答案 0 :(得分:1)
您可以实现使用捕获组后的效果:
^(\s*##\S*)|^\S+\s*(##\S*)
然后像
## foo
将与第一个替代匹配,结果可以从第一个捕获组获得,而
foo ## bar
将与第二个备选方案匹配,“## bar”可以从第二个捕获组获得。