Tag: pcre

Unicode Regex; 无效的XML字符

有效的XML字符列表是众所周知的,按照规范定义: #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] 我的问题是,如果不使用Unicode常规类别实际编码代码点,是否有可能为此(或其反转)生成PCRE正则expression式。 除了不正确地覆盖了换行符和制表符以及其他一些无效字符之外,倒数可能是类似[\ p {Cc} \ p {Cs} \ p {Cn}]的东西。

用pcre支持重builduwsgi

当运行uwsgi我得到以下消息: !!! no internal routing support, rebuild with pcre support !!! 我已经用下面的命令安装了pcre(我认为): Sudo apt-get install libpcre3 libpcre3-dev 我的问题是:为什么我仍然得到这个消息,即使我已经安装了pcre软件包,如果我需要重新安装uwsgi并激活pcre我该怎么做呢? 另外,内部路由是否重要? 我认为这样做,否则uwsgi的制造者不会让消息出现。 我正在运行Ubuntu 12.04 LTS 。 谢谢您的帮助!

php正则expression式在UTF-8中的词边界匹配

我有一个utf-8 php文件中的以下php代码: var_dump(setlocale(LC_CTYPE, 'de_DE.utf8', 'German_Germany.utf-8', 'de_DE', 'german')); var_dump(mb_internal_encoding()); var_dump(mb_internal_encoding('utf-8')); var_dump(mb_internal_encoding()); var_dump(mb_regex_encoding()); var_dump(mb_regex_encoding('utf-8')); var_dump(mb_regex_encoding()); var_dump(preg_replace('/\bweiß\b/iu', 'weiss', 'weißbier')); 我想最后一个正则expression式只replace完整的单词而不是单词的一部分。 在我的Windows电脑上,它返回: string 'German_Germany.1252' (length=19) string 'ISO-8859-1' (length=10) boolean true string 'UTF-8' (length=5) string 'EUC-JP' (length=6) boolean true string 'UTF-8' (length=5) string 'weißbier' (length=9) 在networking服务器(linux)上,我得到: string(10) "de_DE.utf8" string(10) "ISO-8859-1" bool(true) string(5) "UTF-8" string(10) "ISO-8859-1" bool(true) string(5) "UTF-8" string(9) "weissbier" […]

在回溯和失败之后动作的动词

我最近正在阅读PCRE (兼容Perl的正则expression式)文档,并用正则expression式来看一些有趣的技巧。 当我继续阅读和耗尽自己的时候,我停止了,因为使用一些(*…)模式的一些混淆。 我的疑问和困惑涉及(*PRUNE)和(*FAIL) 现在引用(*SKIP)行为就像(*PRUNE) ,只是如果模式是未锚定的,那么bumpalong的前进就不是到下一个字符,而是到了主体中遇到(*SKIP)的位置 。 如果模式的其余部分不匹配,则(*PRUNE)会导致匹配在主题中的当前起始位置失败。 它指出(*FAIL)与(?!)否定断言的同义词。 在模式中的给定位置强制匹配失败。 所以基本上(*FAIL)行为就像一个失败的否定断言,是(?!)的同义词(?!) 和(*PRUNE)导致匹配失败在主题的当前开始位置 ,如果有一个后来匹配失败,导致回溯到达它。 在谈到失败的时候,这些有什么不同呢? 任何人都可以提供这些如何正确实施和使用的例子吗?

ASCII“图像”中的“垂直”正则expression式匹配

注意:这是关于现代正则expression式可能性的一个问题。 这不是用其他方法解决这个问题的最好方法。 它的灵感来自一个较早的问题 ,但不限于正则expression式。 问题 在ASCII“图像”/艺术/地图/string,如: ….X……. ..X..X…X…. XX..X..X….. X….XXXXXX….. X..XXX……….. …..X………. …………..X ..X………..X…. ..X………..X….X… ….X….. 我想找一个简单的垂直线形成三个X s: X X X 图像中的行数是可变的, 每行的宽度也是可变的。 问题(S) 使用正则expression式(PCRE / PHP,Perl,.NET或类似的)有可能: 确定这样的编队是否存在 统计这种编队的数量/匹配他们的出发点(在上面的例子中是4)

你如何debugging正则expression式?

正则expression式可能变得相当复杂。 缺乏空白使他们难以阅读。 我不能使用debugging器正常expression式。 那么专家如何debugging复杂的正则expression式呢?

PHP正则expression式:没有find结尾分隔符“^”

我在正则expression式中遇到了一些麻烦。 这是我的代码 $pattern = "^([0-9]+)$"; if (preg_match($pattern, $input)) echo "yes"; else echo "nope"; 我运行它并得到: 警告:preg_match()[function.preg-match]:找不到结尾分隔符'^'

在PCRE / PHP中匹配Unicode字母字符

我试图写一个合理的宽容validation器的名称在PHP中,我的第一次尝试包括以下模式: // unicode letters, apostrophe, hyphen, space $namePattern = "/^([\\p{L}'\\- ])+$/"; 这最终传递给preg_match()的调用。 据我所知,这与你的香草ASCII字母表一起工作,但似乎在sp或张之类的更为棘手的字符上绊倒。 模式本身有什么问题吗? 也许我希望\p{L}做比我想象的更多的工作? 或者它与传入input的方式有什么关系? 我不确定它是否相关,但确实在表单页面上指定了UTF8编码。

如何将eregexpression式转换为PHP中的preg?

由于POSIX正则expression式(ereg)从PHP 5.3.0开始不推荐,我想知道一个简单的方法来将旧的expression式转换为PCRE(Perl Compatible Regular Expressions)(preg) 。 举例来说,我有这个正则expression式: eregi('^hello world'); 如何将expression式转换为preg_match兼容expression式? 注意:这篇文章是所有与从ereg转换到preg相关的post的占位符,也是相关问题的重复选项。 请不要closures这个问题。 有关: 如何将PHP的eregi更改为preg_match 将ereg_replace更改为等同的preg_replace