【问题标题】:any character notation for php regular expressionphp正则表达式的任何字符表示法
【发布时间】:2011-02-04 04:09:07
【问题描述】:

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

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

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

我试过[]+,但好像不是这样?

【问题讨论】:

    标签: php regular-language


    【解决方案1】:

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

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


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

    如果你想说任何字母,你可以使用:

    • 小写:[a-z]
    • 大写:[A-Z]
    • 两者:[a-zA-Z]

    而且,对于数字:

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


    到那时,您可能会想看看:

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


    之后,当您开始使用

    之类的正则表达式时
    /.+/s
    

    应该匹配:

    • 任何可能的字符
      • 包括换行符
    • 一次或多次

    你会发现它并没有在你期望的时候“停止”——这是因为匹配是贪婪的,默认情况下——你必须在+之后使用?,或者使用U 修饰符;有关详细信息,请参阅Repetition 部分。


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


    哦,顺便说一句:使用正则表达式解析 HTML 是个坏主意...

    通常使用 DOM Parser 会好很多,例如:

    【讨论】:

    • 感谢您的提示。我对此很陌生! :-) 我实际上并没有将它用于 html。 :-D
    • 不客气 :-) (很高兴听到这个消息,关于 HTML ;-))
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2014-10-27
    相关资源
    最近更新 更多