标签: pcre

Unicode正则表达式; 无效的XML字符

有效的XML字符列表是众所周知的,如规范所定义:

#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
Run Code Online (Sandbox Code Playgroud)

我的问题是,通过使用Unicode常规类别,是否可以为此(或其反向)制作PCRE正则表达式而不实际对代码点进行硬编码.反向可能类似于[\ p {Cc}\p {Cs}\p {Cn}],除了不正确地覆盖换行符和制表符并错过其他一些无效字符.

regex unicode pcre

42
推荐指数
3
解决办法
3万
查看次数

正则表达式中"lookbehind断言必须固定长度"的技术原因是什么?

例如,下面的正则表达式将导致失败报告lookbehind断言不是固定长度:

#(?<!(?:(?:src)|(?:href))=["\']?)((?:https?|ftp)://[^\s\'"<>()]+)#S
Run Code Online (Sandbox Code Playgroud)

这种限制不存在lookahead.

regex pcre lookbehind

42
推荐指数
4
解决办法
2万
查看次数

使用正则表达式(PCRE)匹配a ^ nb ^ nc ^ n(例如"aaabbbccc")

众所周知,现代正则表达式实现(最值得注意的是PCRE)与常规语法的原始概念几乎没有共同之处.例如,您可以解析无上下文语法的经典示例{a n b n ; n> 0}(例如aaabbb)使用此正则表达式(演示):

~^(a(?1)?b)$~
Run Code Online (Sandbox Code Playgroud)

我的问题是:你能走多远?是否也可以使用PCRE 解析上下文敏感的语法 {a n b n c n ; n> 0}(例如aaabbbccc)?

php regex pcre

42
推荐指数
4
解决办法
6232
查看次数

如何在grep中使用非捕获组?

这个答案建议grep -P支持(?:pattern)语法,但它似乎对我不起作用(该组仍然被捕获并显示为匹配的一部分).我错过了什么吗?

我正在尝试grep -oP "(?:syntaxHighlighterConfig\.)[a-zA-Z]+Color" SyntaxHighlighter.js使用此代码,并期望结果如下:

wikilinkColor
externalLinkColor
parameterColor
...
Run Code Online (Sandbox Code Playgroud)

但相反,我得到:

syntaxHighlighterConfig.wikilinkColor
syntaxHighlighterConfig.externalLinkColor
syntaxHighlighterConfig.parameterColor
...
Run Code Online (Sandbox Code Playgroud)

grep pcre

41
推荐指数
1
解决办法
2万
查看次数

PHP ereg与preg

我注意到在PHP正则表达式库中有ereg和preg之间的选择.有什么不同?是一个比另一个更快,如果是这样,为什么不慢的被弃用?

是否有任何情况下使用一个而不是另一个?

php regex pcre posix-ere

38
推荐指数
4
解决办法
2万
查看次数

链接器错误LNK2038:在发布模式下检测到不匹配

我正在尝试将我的小应用程序从Win XP和VS 2005移植到Win 7和VS 2010.

该应用程序在调试模式下编译并运行顺利,但在发布模式下,我收到以下错误:

pcrecpp.lib(pcrecpp.obj) : error LNK2038: mismatch detected for 
'_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in LoginDlg.obj
Run Code Online (Sandbox Code Playgroud)

我应该在哪里开始检查?

c++ linker pcre visual-studio-2010 release-mode

38
推荐指数
3
解决办法
6万
查看次数

PHP中的preg_match和UTF-8

我正在尝试使用preg_match搜索UTF8编码的字符串.

preg_match('/H/u', "\xC2\xA1Hola!", $a_matches, PREG_OFFSET_CAPTURE);
echo $a_matches[0][1];
Run Code Online (Sandbox Code Playgroud)

这应该打印1,因为"H"在字符串"¡Hola!"中的索引1处.但它打印2.所以它似乎并没有将主题视为UTF8编码的字符串,即使我在正则表达式中传递"u" 修饰符.

我在php.ini中有以下设置,其他UTF8函数正在运行:

mbstring.func_overload = 7
mbstring.language = Neutral
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

php unicode pcre utf-8

33
推荐指数
4
解决办法
6万
查看次数

为什么不能在断言后面的零宽度中使用重复量词

我一直认为你不能在零宽度断言中使用重复量词(Perl Compatible Regular Expressions [PCRE]).但是,最近我发现你可以在前瞻断言中使用它们.

所以我的问题是:

PCRE正则表达式引擎在使用零宽度外观搜索时如何工作,从而无法使用重复量词?

以下是R中PCRE的一个简单示例:

# Our string
x <- 'MaaabcccM'

##  Does it contain a 'b', preceeded by an 'a' and followed by zero or more 'c',
##  then an 'M'?
grepl( '(?<=a)b(?=c*M)' , x , perl=T )
# [1] TRUE

##  Does it contain a 'b': (1) preceeded by an 'M' and then zero or more 'a' and
##                         (2) followed by zero or more 'c' then an 'M'?
grepl( '(?<=Ma*)b(?=c*M)' , x …
Run Code Online (Sandbox Code Playgroud)

regex pcre r

33
推荐指数
2
解决办法
6844
查看次数

与正则表达式反转匹配

有了PCRE,你怎么可以构造如果是一个字符串,将只匹配一个表达式找到.

如果我使用grep(我不是),我会想要-v选项.

更具体的例子:我希望我的正则表达式匹配当且仅当字符串foo不是对的字符串中.所以它会匹配bar但不会foobar.

regex pcre

28
推荐指数
2
解决办法
9万
查看次数

php - 正则表达式 - PCRE不支持\ L,\ l,\ N,\ P,

我需要使用以下正则表达式来验证一些亚洲字符

 $regexp = "/^[\-'\u2e80-\u9fff\sa-zA-Z.]+$/"; // with warning

 $regexp = "/^[\-'\sa-zA-Z.]+$/";   // without warning
Run Code Online (Sandbox Code Playgroud)

preg_match()[function.preg-match]:编译失败:PCRE不支持\ L,\ l,\ N,\ P,\ p,\ U,\ u或\ X.

你知道如何更改正则表达式模式,以便我可以验证亚洲字符 \u2e80-\u9fff

我正在使用最新的XAMPP

Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
Run Code Online (Sandbox Code Playgroud)

谢谢

php regex pcre

28
推荐指数
1
解决办法
2万
查看次数

标签 统计

pcre ×10

regex ×7

php ×4

unicode ×2

c++ ×1

grep ×1

linker ×1

lookbehind ×1

posix-ere ×1

r ×1

release-mode ×1

utf-8 ×1

visual-studio-2010 ×1