2013-12-10 33 views
1

我试图运行正则表达式编译来查找价格。价格有一些领先的文字,一个可能的空间,打开一个可能有许多不重要变量的跨度,然后跨度关闭,并有一个可能的美元符号,然后是价格。正则表达式编译失败无法重复

我的正则表达式是这样的:

"@minimum bounty amount is\s*<span[^>]*>\$?[\d,][email protected]"

@是我的分隔符,我有话后,可能的空间,跨度打开,我说:“别担心什么,直到你到标签的末尾“,标签关闭,我有可能的美元符号,然后我将它与匹配数字和逗号相匹配,因为数字可以并且可能用逗号格式化。 我得到的错误是这样的:

Compilation failed: nothing to repeat at offset 41

理论上这个表达式应该像The minimum bounty amount is <span style="white-space: nowrap;">$50</span>匹配的东西,在记事本++正则表达式引擎则匹配此。但PHP似乎不喜欢这个。

任何想法?

回答

3

你的问题是使用双引号。 PHP将发送$未转义为正则表达式引擎。

试着用单引号:

'@minimum bounty amount is\s*<span[^>]*>\$?[\d,][email protected]' 

双引号将需要双重逸出的$为:

"@minimum bounty amount is\s*<span[^>]*>\\$?[\d,][email protected]" 

1转义是PHP和2逃逸是正则表达式引擎。

+1

非常好的一点。这似乎解决了它。非常感谢你! – SpencerD

+1

不客气,很高兴它解决了。 – anubhava