如何为正则表达式添加条件?

时间:2016-09-14 09:23:16

标签: javascript java regex string regular-language

我必须得到以="开头并以下一个"结尾的字符串。但它应包含<符号。

(="([^"])*<*")

字符串:

dit niet "dit wel" dit ook niet ="maar <dit ""en""dit ook"
REM dit niet "dit <wel" dit ook niet ="maar dit ""en""dit ook"
dit niet "dit wel" REM "maar dit ""en""dit ook"

上面的代码给了我两个字符串,我只需要在下面提到一个。

预期结果:

="maar <dit "

实际结果:

="maar <dit "
="maar dit "

注意: 需要获取以="开头并且<开头的所有结果,并以下一次"

结尾

2 个答案:

答案 0 :(得分:3)

您的="([^"])*<*"正则表达式匹配=",然后它会重复捕获" 以外的任何字符(这样只有最后一次出现的字符才能保存在第1组缓冲区),然后零个或多个<个符号,然后是"。因此,您的正则表达式并非真正要求 <出现在您匹配的字符串中。

您可以使用

="([^"<]*<[^"]*)"

请参阅regex demo

详细

  • =" - ="序列
  • ([^"<]*<[^"]*) - 包含值的第1组:
    • [^"<]* - 除"<以外的零个或多个字符
    • < - <符号
    • [^"]* - 除"
    • 以外的零个或多个字符
  • " - 双引号

答案 1 :(得分:2)

将正则表达式切换为

(="([^"]*<[^"]*)*")

直播here

此部分([^"]*<[^"]*)确保您的内部字符串包含<