0

目前我在我的 Javascript 代码中使用以下 RegEx:

'(?:' + tags + '):([\\s\\S]*?)(?=\\s+(?:' + tags + '|END):)'

..因为它是一个动态正则表达式,变量“标签”用于我要过滤的几个参数。

RegEx 在 PHP 代码中的外观如何?我得到以下部分工作:

(?:' + tags + '):([\\s\\S]*?)

但无论我尝试什么,第二部分都不适用于 PHP:

(?=\\s+(?:' + tags + '|END):)

谢谢您的帮助!

编辑1:

我当前的 PHP 代码如下所示:

$regexp = '(?:'.$tags.'):([\\s\\S]*?)(?=\\s+(?:'.$tags.'|END):)';

编辑2:

我正在尝试查找以下标签/参数:

$tags = 'X-WR-CALNAME|X-WR-TIMEZONE|X-WR-CALDESC|BEGIN|CLASS|DTSTAMP|UID|CREATED|LAST-MODIFIED|SEQUENCE|STATUS|TRANSP|X-MICROSOFT-CDO-BUSYSTATUS|ORGANIZER|SUMMARY|DESCRIPTION|LOCATION|DTSTART|DTEND|END';

...从一个看起来像这样的文本中:

开始:事件 DTSTART:20121117T143000Z DTEND:20121117T163000Z DTSTAMP:20121130T185808Z UID:n3f3qjgtads37phsq3oovmvouc@google.com 创建:20121102T191518Z 描述:1。德甲\, 12. Spieltag \n\nhttp://www.fussball-spielplan. 信息上次修改:20121117T170303Z 位置:Imtech-Arena\,汉堡 序列:0 状态:确认摘要:汉堡 SV - 1. FSV 美因茨 05 (1:0) 运输:透明 结束:事件

..为了在适当的标签/参数旁边获得值。

4

1 回答 1

0

正则表达式似乎在添加分隔符/模式的开头和结尾)时起作用。

$regexp = '/(?:'.$tags.'):([\s\S]*?)(?=\s+(?:'.$tags.'|END):)/';

\除非您尝试匹配文字"\"(在这种情况下'\\\\'必须使用), 否则无需转义in php 正则表达式字符串 - 尽管这样做很好。

于 2013-03-12T16:03:15.340 回答