这可能并不像你想象的那么容易:)
我希望在字符和2个字符之间精确匹配,并且只在这两个字符之间匹配。第一个角色是!第二个是']
示例字符串:Hello 123 !get this text'] hello 1234
所以我想只捕获“获取此文本”,
E.g。这也应该只抓住“得到这个文本”:
Hello 123 ! hello !get this text'] hello 1234
而不是“你好!得到这个文字”
这个正则表达式似乎只适用于第一个例子:(?<=!)[^}]*(?='])
由于
答案 0 :(得分:1)
尝试以下表达式:
(?<=!)[^!]+?(?='\])
(?<=!)
:留意感叹号!
。[^!]+?
:匹配一个或多个不是惊叹号的字符,并且一次懒惰地执行一个字符,在每个字符匹配后检查以下表达式以了解何时停止。(?='\])
:展望未来是否有文字'
后跟文字]
。这是PHP中的Regex101 Demo,但在这种情况下没有区别。
答案 1 :(得分:0)
您还可以使用更简单的正则表达式-split和-replace:
$t1 = "Hello 123 !get this text'] hello 1234"
$t2 = "Hello 123 ! hello !get this text'] hello 1234"
($t1,$t2) -split '!' -match "']" -replace "'].+",''
get this text
get this text