pcre相关内容
是否可以匹配(?[01]+)\s*\+\s*(?[01]+)\s*=形式的加法\s*(?[01]+),其中 a + b == c(如二进制加法)必须保持? 这些应该匹配: 0 + 0 = 00 + 1 = 11 + 10 = 1110 + 111 = 1001001 + 010 = 00111111 + 1 = 100001111 + 10 = 10010 这些不应该匹配: 0
..
好的,所以当模式 [abc] 匹配单个字符 a、b 或 c,模式 [^abc] 匹配任何给定的字符,不是 a、b,或者c. 现在,如果我在上面的语句中用 string 替换 character,如果我还将第一个模式更改为替代结构,如 (abc|def|ghi).-- 它将匹配三个字符的连续字符串,等于 abc、def 或 ghi.我该怎么做才能匹配不等于abc、def或ghi的任何三个字符的
..
假设我有 IP 10.23.233.34,我想简单地将 233 换成 234.第一个、第二个和最后一个八位字节是未知的.第三个八位字节是 233 或 234.我想进行替换,使其与 IP、subs 匹配并保留其他所有内容,同时仍切换最后一个八位字节.例如: 输入:10.23.233.34 s/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){}2
..
我收到一个错误:*警告:preg_replace():编译失败:PCRE 不支持 test.php 中偏移 50 处的 \L、\l、\N、\U 或 \ustrong> 在第 13 行.* 如何制作正确的函数pregForPreg? 解决方案 您似乎想转义特殊的正则表达式字符.这个函数已经存在,叫做preg_quote(). 你得到错误,因为你没有正确地转义 \: TI - 是
..
我正在尝试在一个简单的字符串上练习星号 * 量词,但是虽然我只有两个字母,但结果包含第三个匹配项. 结果出来了: 数组(1) {[0]=>数组(3){[0]=>字符串(1)“一个"[1]=>字符串(0)“"[2]=>字符串(0)“"}} 据我所知,它首先匹配了 a,然后没有匹配 b,所以结果应该是 数组(1) {[0]=>数组(2){[0]=>字符串(1)“一个"[1]=>字符串(
..
$subject = "SIverygood \n SIverygood\n";$pattern = '/^SI/m';preg_match_all($pattern, $subject, $matches2,PREG_OFFSET_CAPTURE);var_dump($matches2); 我无法理解 m 和 s 修饰符.我想在每个换行符的开头获得 SI.我这样做是为了练习目的,以了解 m 和
..
我正在尝试创建类似 smarty 的类似解析器.对于非常小的代码部分,并且不想实现巨大的类似 smarty 的解析器. 我想到的是:(?:([a-zA-Z0-9]+)=(?:([^\v '"]+)|"(.*?)"|'(.*?)')|([a-zA-Z0-9]+)) 在 https://regex101.com/r/l5FI5f/2/ 上看起来不错.每场比赛都是 1 或 2 个条目 + 完
..
为什么这个调用返回NULL?正则表达式错了吗?对于 test 输入,它不会返回 NULL.文档说 NULL 表示错误,但它可能是什么错误? $s = hex2bin('5b5d202073205b0d0a0d0a0d0a0d0a20202020202020203a');//$s = '测试';$s = preg_replace('/\[\](\s|.)*\]/s', '', $s);var_du
..
我一直在尝试制作一些基于 RegEx 的函数,其中大部分使用 \Q 和 \E 作为一些RegEx pattern 是用户输入. 所以,假设我们正在使用 delimiter / 并希望将它与 / 匹配,该函数将在其中构造一些东西/\Q/\E/ 的行. 我不知道为什么 /\Q/\E/ 与 / 不匹配,但与其他所有分隔符匹配,除非您使用相同的分隔符输入. 也许,它认为分隔符是结尾,即使
..
为什么在下面的例子中字母 é 算作与 \b 匹配的词边界? 模式:/\b(cum)\b/i 文本:écumé 匹配不需要的“cum". 有没有可能克服这个问题? 解决方案 当您将 u 修饰符添加到正则表达式时,它会起作用 /\b(cum)\b/iu
..
所以我将一些句子插入到具有一些自动更正过程的数据库中.下面这句话: $sentence = "这只狗是你的吗,因为它不可能是我的"; 以下代码将每个单词大写,但要确保它不大写缩写(例如 n't): str_replace("'S", "'s", preg_replace("/(\w+)n'T?/", "$1n't", (preg_replace("/\b[a-z]/e",'strtouppe
..
我想找到这个字符串中出现在 w 之后的所有字符,但只找到 foo 之后的那些 edward woodward foo 爱德华伍德沃德 /(?
..
首先很抱歉我的英语不好.我是德国人. 下面给出的代码在 PHP 中运行良好: $string = preg_replace('/href="(.*?)(\.|\,)"/i','href="$1"',$string); 现在 sed 也需要同样的东西.我觉得应该是: sed 's/href="(.*?)(\.|\,)"/href="{$\1}"/g' test.htm 但这给了我这个错
..
我有一个我想在几个地方使用的模式,但我想访问该模式的内部部分.有没有办法做到这一点? 在这个简化示例中: (?(DEFINE)(? \s+ (? 是 \s+ a) \s+ ))这 (?&_isa_) (?test) 我想在正则表达式成功时访问命名组 isa 中匹配的捕获字符串,而不必像这样拉出周围的 \s+: (?(DEFINE)(?
..
我想将字符串中的时间 (10.00) 与日期和时间 ("21.01.08 10.00") 匹配.我正在使用以下正则表达式: new RegExp("\\b[0-9]{1,2}\\.[0-9]{1,2}\\b" "g"); 但这与 21.01.08 和 10.00 的 21.01 相匹配. 我使用 PCRE 作为我的正则表达式引擎. 更新: 对不起,我应该更清楚.数据和时间是更
..
使用 stringr 我尝试检测字符串末尾的 € 符号,如下所示: str_detect("my text €", "€\\b") # FALSE 为什么这不起作用?它适用于以下情况: str_detect("my text a", "a\\b") # TRUE - 字母而不是€grepl("€\\b", "2009in €") # TRUE - 基础 R 解决方案 但它在 perl 模式
..
我得到了这个正则表达式: $val = "(123)(4)(56)";$regex = "^(\((.*?)\))+$";preg_match_all("/{$regex}/", $val, $matches); 谁能告诉我为什么这只匹配最后一个数字 (56) 而不是每组数字单独匹配? 这是 $matches 在上述正则表达式运行后包含的内容: 数组0 =>大批0 =>字符串'(123
..
我想使用 PCRE C 库递归匹配一个组. 例如 pattern = "(\d,)"主题 = "5,6,3,2,"OVECCOUNT = 30pcrePtr = pcre_compile(pattern, 0, &error, &erroffset, NULL);rc = pcre_exec(pcrePtr, NULL, 主题, (int)strlen(subject),0, 0, ove
..
这是这个问题. 看看这个模式: (o(?1)?o) 匹配任意长度为2n的o序列,n≥1. 它有效,请参阅 regex101.com(添加字边界以更好地演示). 问题是:为什么? 在下文中,字符串的描述(匹配与否)将只是一个粗体数字或一个描述长度的粗体术语,例如 2n. 分解(添加空格): ( o (?1)? o )( ) # 捕获组 1o o # 在组的开头和结尾各匹配
..
在使用 Perl 处理大型文本化学数据库的过程中,我遇到了使用正则表达式匹配化学式的问题.我之前看过这些 两个主题,但建议的答案对于我的要求来说太松散了. 具体来说,我(公认有限)的研究使我这篇文章 给出了当前接受的化学符号的正则表达式,我将复制到这里以供参考 [BCFHIKNOPSUVWY]|[ISZ][nr]|[ACELP][ru]|A[cglmst]|B[aehikr]|C[adef
..