【发布时间】:2011-02-04 04:09:07
【问题描述】:
在我的正则表达式中,我想说的是,在示例文本中,任何字符都是允许的,包括大小写的 a-z、数字和特殊字符。
例如,我的正则表达式可能会检查文档是否为 html。因此:
"/\n<html>[]+</html>\n/"
我试过[]+,但好像不是这样?
【问题讨论】:
标签: php regular-language
在我的正则表达式中,我想说的是,在示例文本中,任何字符都是允许的,包括大小写的 a-z、数字和特殊字符。
例如,我的正则表达式可能会检查文档是否为 html。因此:
"/\n<html>[]+</html>\n/"
我试过[]+,但好像不是这样?
【问题讨论】:
标签: php regular-language
使用[XXX]+ 表示介于[ 和] 之间的任何字符,一次或多次。
在这里,您没有在 [ 和 ] 之间添加任何字符——因此出现了问题。
如果你想说“任何可能的字符”,你可以使用.
注意:默认情况下,它不会匹配换行符;如果你愿意,你必须使用Pattern Modifiers。
如果你想说任何字母,你可以使用:
[a-z]
[A-Z]
[a-zA-Z]
而且,对于数字:
[0-9] : 任意数字[a-zA-Z0-9] :任何小写或大写字母,以及任何数字。
到那时,您可能会想看看:
\w 元字符,意思是“任何单词字符”
之后,当您开始使用
/.+/s
应该匹配:
你会发现它并没有在你期望的时候“停止”——这是因为匹配是贪婪的,默认情况下——你必须在+之后使用?,或者使用U 修饰符;有关详细信息,请参阅Repetition 部分。
好吧,实际上,最好的办法是投入一些时间,仔细阅读手册PCRE Patterns 部分中的所有内容,如果你想开始使用正则表达式;-)
哦,顺便说一句:使用正则表达式解析 HTML 是个坏主意...
通常使用 DOM Parser 会好很多,例如:
【讨论】:
点 . 是“任何字符”的元字符
【讨论】:
. 不匹配换行符。