php正则表达式的任何字符表示法

时间:2010-04-04 10:29:45

标签: php regular-language

在我的正则表达式中,我想说在示例文本中,允许任何字符,包括大小写的a-z,数字和特殊字符。

例如,我的正则表达式可能正在检查文档是否为html。因此:

"/\n<html>[]+</html>\n/"

我试过[] +但似乎不喜欢这个?

2 个答案:

答案 0 :(得分:2)

.是“任何字符”的元字符

答案 1 :(得分:2)

使用[XXX]+表示[]之间的任何字符,一次或多次。

在这里,您没有在[]之间添加任何字符 - 因此问题就出现了。


如果你想说“任何可能的角色”,你可以使用.
注意:默认情况下,它不符合换行符;如果你愿意,你必须使用Pattern Modifiers

如果你想说任何一封信,你可以使用:

  • 表示小写:[a-z]
  • 表示大写字母:[A-Z]
  • 同时为:[a-zA-Z]

并且,对于数字:

  • [0-9]:任何数字
  • [a-zA-Z0-9]:任何小写或大写字母,以及任何数字。


那时,你可能想看看:

  • PCRE手册的Backslash部分
  • 尤其是\w元字符,意为“任何单词字符”


之后,当你开始使用正则表达式,如

/.+/s

应匹配:

  • 任何可能的角色
    • 包含换行符
  • 一次或多次

你会发现,当你期望它时它也不会“停止” - 这是因为匹配是贪婪的 - 默认情况下 - 你必须在{{1}之后使用? },或使用+修饰符;有关更多信息,请参阅Repetition部分。


好吧,实际上,最好的办法是投资一段时间,如果你想开始使用正则表达式,请仔细阅读手册PCRE Patterns部分的所有内容; - )< / p>


哦,BTW:使用正则表达式来解析 HTML是一个坏主意......

使用DOM解析器通常要好得多,例如: