我正在尝试匹配以下示例中@@BOKeyword-
和-End@@
之间的最内容:
@@BOKeyword-Here is@@BOKeyword-I want to match this!-End@@stuff-End@@
所以我的匹配是:I want to match this!
我正在使用以下正则表达式:@@BOKeyword-([^@@BOKeyword--End@@]*)-End@@
然而,这根本不匹配。我根据这个例子开发了这个,这个例子来自a previous question's answer:
AC I want to match this! BD I don't want to match this! AC I want to match this! BD I don't want to match this! BD
使用正则表达式:AC([^ACBD]*)BD
这可以按预期工作。我想我误解了它是如何工作的。任何提示将不胜感激!谢谢!
注意:我在Java中运行它。
答案 0 :(得分:1)
如果你的正则表达式引擎支持lookaround
,你可以试试这个:
(?<=@@BOKeyword-).((?<!@@BOKeyword-).(?!-End@@))*.(?=-End@@)
DOT
匹配开始字符:I
DOT
匹配未被分隔符包围的字符:·want·to·match·this
DOT
个匹配结束字符:!
有两种情况没有覆盖(中间只有一个/零字符):
(?<=@@BOKeyword-).?(?=-End@@)
将这两个正则表达式结合起来非常困难。另一种方式是:
{
/ }
(或其他单字符对)替换您的分隔符