不可能使用正则表达式从字符串中捕获空白区域

时间:2016-09-29 22:20:50

标签: regex

我在html上有这两行:

<li><strong>Brand: </strong><em>i cant get this one</em>
<li><strong>Brand: </strong><em>this second one works</em>

我希望得到我无法得到这个的价值,但是在第一个“品牌:”之后,我有了这个我无法用正则表达式获得的空白空间,这是主要的问题

我发布了 phpliveregex ,希望能帮助我使用此正则表达式的人:http://www.phpliveregex.com/p/hkr

问题:在“品牌:”之后,我无法捕获第一个空格*

我需要从地狱捕获这个空间,但直到现在只有(..)才能得到一些东西......

聚苯乙烯。我想要几个小时......

2 个答案:

答案 0 :(得分:1)

在phpliveregex链接提供的示例中,第一个看起来像空格的字符不是实际的白色字符。 它是扩展的ASCII字符#255(0xFF)。

您可以像这样更新正则表达式来处理它:

Brand:(\s| )[<\/a-z>$]*(?P<brand>[\w\s]*)<
          ^--- This is NOT a space character

请参阅此处的示例:http://www.phpliveregex.com/p/hkJ

编辑:扩展的ASCII字符#255是一个非中断空格。见http://www.theasciicode.com.ar/extended-ascii-code/non-breaking-space-no-break-space-ascii-code-255.html

答案 1 :(得分:0)

我不知道这是否可行。

如果您希望在<em></em>之间获取文字,可以尝试使用此正则表达式<em>(.*)<\/em>,请检查此link(它是一名正则表达式测试人员)

顺便说一句,如果您想在brand:之后捕捉空间,可以试试这个(检查测试人员link

Brand:(\s+)