试图用正则表达式挑选一个字符串的特定部分

时间:2010-12-11 09:14:12

标签: regex

我已经尝试过再次尝试为此模式找到一个正则表达式。 我从HTML源代码中选择了一个这样的字符串。

<!-- TAG=Something / Something else -->

有时它只是:

<!-- TAG=Something -->

在这两种情况下,我希望正则表达式只匹配“Something”,即TAG =和可选的/.

之间的所有内容

我的第一次尝试是:

TAG=(.*)[/]?(.*) -->

但第一个括号匹配TAG =和 - &gt;之间的所有内容。无论。那么这里的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

试试这个:

TAG=([^/]*)(?:/(.*))?-->

第1组将包含“Something” 第2组将包含“其他内容”或null。

Test it.

答案 1 :(得分:2)

<!--.*?=(.*?)(-->|/)

它匹配您需要的一切。

答案 2 :(得分:1)

使用非贪婪修饰符?

TAG=(.*?)[/]?.* -->

此外,[/]的使用似乎不常见 - 您不需要字符类来编写单个字符。这种不寻常语法的最可能解释可能是因为您使用/作为正则表达式分隔符,这意味着/被视为特殊字符。在许多(不是全部)正则表达式方言中,可以通过使用不同的分隔符来解决此问题,例如#。这可以防止您需要转义斜杠。