繁体   English   中英

正则表达式仅在两个字符之间获取文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM