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

时间:2013-11-28 13:09:08

标签: c# regex powershell

这可能并不像你想象的那么容易:)

我希望在字符和2个字符之间精确匹配,并且只在这两个字符之间匹配。第一个角色是!第二个是']

示例字符串:Hello 123 !get this text'] hello 1234

所以我想只捕获“获取此文本”,

E.g。这也应该只抓住“得到这个文本”:

Hello 123 ! hello !get this text'] hello 1234

而不是“你好!得到这个文字”

这个正则表达式似乎只适用于第一个例子:(?<=!)[^}]*(?='])

由于

2 个答案:

答案 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