Php 需要一个正则表达式来匹配特定的句子格式
我需要一个正则表达式来匹配一个非常特殊的句子格式。格式如下: word(可包含<代码>、()[]&^%和空格)、word(可包含<代码>、()[]&^%和空格)、word(可包含<代码>、()[]&^%和空格) 所以基本上它是一个词,一个词,一个词,但是每个词都可以包含一些特殊的字符和空格。有人能帮我吗Php 需要一个正则表达式来匹配特定的句子格式,php,javascript,regex,Php,Javascript,Regex,我需要一个正则表达式来匹配一个非常特殊的句子格式。格式如下: word(可包含、()[]&^%和空格)、word(可包含、()[]&^%和空格)、word(可包含、()[]&^%和空格) 所以基本上它是一个词,一个词,一个词,但是每个词都可以包含一些特殊的字符和空格。有人能帮我吗 例如: 各种各样的艺术家,共6人,我建造 这座城市(迈克尔·迈耶) 艾达, 盲人之家/幸运咒,幸运咒 赫克托,奥拉尔,奥拉尔(亚历克斯·皮科内) 混音) 我不确定您是否希望包含将您的句子划分为允许模式的,。如果要将一
例如:
我不确定您是否希望包含将您的句子划分为允许模式的
,
。如果要将一个句子匹配三次:
/^[a-z()[]&^%#\s]+,[a-z()[]&^%#\s]+,[a-z()[]&^%#\s]+$/i
我将使用此解决方案:
/(?x)([a-z\\d\\s()[\\]&^%#\\/]+),((?1)),((?1))/i
这样你就不必重复你的模式
对你来说,“单词”是什么?仅限小写字母字符?单词往往不包括空格……好吧,你说得对——那就是一句话,一句话,一句话。它们可以是小写和大写。我认为你的模式描述得不清楚。也许你可以举个例子。@Pavel:那么我猜你想要的和一句话完全一样。。。除非这三个句子必须以某种方式分隔,否则用逗号分隔的句子是什么?我刚刚注意到,您的第二个示例中有一个/,它与您定义的模式不匹配。无需转义所有这些字符;仅在字符类中
\
和]
(也取决于位置^
和-
)是需要转义的特殊字符。所以[a-z()[\\]&^%\s]
就足够了。此外,您应该允许数字。要么使用a-z0-9
,要么使用更好的\w
。如果第一个单词重复三次,这难道不起作用吗?@Nev Stokes,不是(参见ideone上的代码),它使用子模式。对我来说,这并不是什么新鲜事。你能提供参考吗?(仅在手册中找到\1
)谢谢,非常感谢您的链接。关于PCRE,似乎还有很多我不知道的东西,而且在php.net上没有记录。再次感谢。