正则表达式,用于在开始和结束之间获取

时间:2014-10-21 11:27:50

标签: regex

我正在努力为以下问题构建正则表达式。

示例文字:

startABC)kasldstartXYZ,kjlksdstartMNO]aksdjfakstartDEF&#xA
startXYZ)kasldstartABC,kjlksdstartPQR]aksdjfakstartEFG&#xA

输出:

ABC,XYZ,MNO,DEF,XYZ,ABC,PQR,EFG

启动Word:

"start"

结束语:

"," or ")" or "=" or "&#xA" or "]" or """

2 个答案:

答案 0 :(得分:1)

你只是在寻找这样的东西:

start(.*?)(?:&#xA|[,)=\]"])

您想要的文本将位于捕获组中。结束分隔符位于非捕获组(?: ... )中。

答案 1 :(得分:1)

使用positive lookaround assertions

(?<=start).*?(?=&#xA|[=,)"\]])

DEMO

说明:

  • (?<=start)正面Lookbehind断言匹配必须以字符串start开头。
  • .*?任意字符的最短匹配次数为零次或更多次。
  • (?=&#xA|[=,)"\]])正向前瞻断言,匹配必须后跟前瞻内部模式匹配的字符。