相关疑难解决方法(0)

正则表达式中的递归模式

这与正则表达式非常相关,以匹配外部括号,但是,我特别想知道如何或是否可以执行此正则表达式的递归模式我还没有找到使用这个策略的python示例,所以认为这应该是一个有用的问题!

我已经看到 了一些 索赔 递归的模式可以用来匹配平衡括号,但使用Python的没有例子正则表达式包(注:重支持递归模式,你需要使用正则表达式).

一种说法是语法在b(?:m|(?R))*e哪里:

b是什么开始构造,m是什么可以发生在构造的中间,并且e是在构造的末尾可以发生的


我想在以下内容中提取外部大括号的匹配项:

"{1, {2, 3}} {4, 5}"
["1, {2, 3}", "4, 5"]  # desired
Run Code Online (Sandbox Code Playgroud)

请注意,对于括号,这很容易做到:

re.findall(r"{([^{}]*)}", "{1, {2, 3}} {4, 5}")
['2, 3', '4, 5']
Run Code Online (Sandbox Code Playgroud)

(在我的例子中,我使用的是finditer(在匹配对象上),请看这里.)

所以我曾希望以下或某些变体可行:

regex.findall(r"{(:[^{}]*|?R)}", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:[^{}]*|?R)})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*|(?R))*})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*)|(?R)*})", …
Run Code Online (Sandbox Code Playgroud)

python regex recursive-regex

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

Perl的`(?PARNO)`在完成时会丢弃它自己的命名捕获吗?

递归正则表达式是否理解命名捕获?在文档中有一个注释(?{{ code }}),它是一个独立的子模式,它有自己的一组捕获,在子模式完成时被丢弃,并且有一个注释(?PARNO),它的"类似于(?{{ code }}).(?PARNO)在它完成时丢弃它自己的命名捕获?

我正在写关于Perl的Mastering Perl的递归正则表达式.perlre已经有一个平衡parens的例子(我在Perl正则表达式匹配平衡括号中显示它),所以我想我会尝试平衡引号:

#!/usr/bin/perl
# quotes-nested.pl

use v5.10;

$_ =<<'HERE';
He said 'Amelia said "I am a camel"'
HERE

say "Matched!" if m/
    (
        ['"]
            ( 
                (?: 
                    [^'"]+
                    | 
                    ( (?1) ) 
                )* 
            )
        ['"]
    )
    /xg;

print "
1 => $1
2 => $2
3 => $3
4 => $4
5 => $5
";
Run Code Online (Sandbox Code Playgroud)

这有效,两个引号显示在$1$3: …

regex perl named-captures

32
推荐指数
1
解决办法
773
查看次数

我可以使用Perl正则表达式来匹配平衡文本吗?

我想在Perl中匹配括号中的文本.我怎样才能做到这一点?


这是来自官方perlfaq的问题.我们将perlfaq导入Stack Overflow.

regex perl brackets recursive-regex

13
推荐指数
1
解决办法
5261
查看次数

解析包含数组的字符串

我想将包含递归字符串数组的字符串转换为深度为一的数组.

例:

StringToArray("[a, b, [c, [d, e]], f, [g, h], i]") == ["a", "b", "[c, [d, e]]", "f", "[g, h]", "i"]
Run Code Online (Sandbox Code Playgroud)

看起来很简单.但是,我来自功能背景,我不熟悉.NET Framework标准库,所以每次(我从头开始像3次)我最终只是简单的丑陋代码.我最近的实施就在这里.如你所见,这很丑陋.

那么,C#的做法是什么?

c# string list

9
推荐指数
1
解决办法
405
查看次数

标签 统计

regex ×3

perl ×2

recursive-regex ×2

brackets ×1

c# ×1

list ×1

named-captures ×1

python ×1

string ×1