Regex编译失败,无法重复


Regex Compilation Failed Nothing To Repeat

我正在尝试运行regex编译来查找价格。价格有一些前导文本,一个可能的空格,打开一个可以有许多不同变量的跨度,这些变量都不重要,然后跨度关闭,价格后面可能有一个美元符号。

我的正则表达式是:

"@minimum bounty amount is's*<span[^>]*>'$?['d,]+@"

@是我的分隔符,我有尾随词,可能的空格,跨度打开,我说"在你到达标签末尾之前不要担心任何事情",标签关闭,我有可能的美元符号,然后我让它匹配数字和逗号,因为数字可以而且很可能是用逗号格式化的。我得到的错误是:

Compilation failed: nothing to repeat at offset 41

理论上,这个正则表达式应该与The minimum bounty amount is <span style="white-space: nowrap;">$50</span>类似,在Notepad++正则表达式引擎上,它与之匹配。然而PHP似乎不喜欢这样。

有什么想法吗?

您的问题是使用双引号。PHP将向正则表达式引擎发送未绑定的$

尝试单引号:

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

双引号将需要对$进行双转义为:

"@minimum bounty amount is's*<span[^>]*>''$?['d,]+@"

第一个转义用于PHP,第二个转义用于正则表达式引擎。