[英]regex to get text only between two characters
这可能不是您想的那么容易:)
我想完全匹配一个字符和2个字符之间的内容,并且仅在这两个字符之间进行匹配。 第一个字符是! 第二个是']
示例字符串: Hello 123 !get this text'] hello 1234
所以我只想捕获“获取此文本”,
例如,这也应该只捕获“获取此文本”:
Hello 123 ! hello !get this text'] hello 1234
而不是“你好!获取此文本”
此正则表达式似乎仅适用于第一个示例: (?<=!)[^}]*(?='])
谢谢
尝试以下表达式:
(?<=!)[^!]+?(?='\])
(?<=!)
:在后面找一个感叹号!
。 [^!]+?
:匹配一个或多个不是感叹号的字符,然后一次懒惰地处理一个字符,在每个匹配的字符后检查以下表达式以知道何时停止。 (?='\\])
:向前看是否存在文字'
,其后是文字]
。 这是PHP中的Regex101 Demo ,但在这种情况下没有区别。
您还可以将更简单的正则表达式与-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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.