标签: capturing-group

1653
推荐指数
16
解决办法
66万
查看次数

Vim Regex捕获组[bau - > byau:ceu - > cyeu]

我有一个单词列表:

bau
ceu
diu
fou
gau
Run Code Online (Sandbox Code Playgroud)

我想将该列表转换为:

byau
cyeu
dyiu
fyou
gyau
Run Code Online (Sandbox Code Playgroud)

我没有成功尝试这个命令:

:%s/(\w)(\w\w)/\1y\2/g
Run Code Online (Sandbox Code Playgroud)

鉴于这不起作用,我需要更改什么才能使正则表达式捕获组在Vim中工作?

regex vim regex-group capturing-group

118
推荐指数
5
解决办法
8万
查看次数

我们如何匹配^ nb ^ n与Java正则表达式?

这是一系列教育正则表达式文章的第二部分.它显示了向前看符号和嵌套引用如何可以用来匹配非正规languge ñ b ñ.嵌套引用首先介绍在:这个正则表达式如何找到三角形数字?

其中一种原型非常规语言是:

L = { añ bñ: n > 0 }

这是所有非空字符串的语言,由一些数字a后跟相同数量的字符串组成b.在这个语言字符串的例子有ab,aabb,aaabbb.

这种语言可以通过泵浦引理显示为非规则的.它实际上是一种原型上下文无关语言,可以通过无上下文语法 生成S ? aSb | ab.

尽管如此,现代正则表达式实现清楚地认识到的不仅仅是常规语言.也就是说,它们不是形式语言理论定义的"规则".PCRE和Perl支持递归正则表达式,.NET支持平衡组定义.更少的"花哨"特征,例如反向引用匹配,意味着正则表达式不规则.

但这个"基本"功能有多强大?L例如,我们可以用Java正则表达式识别吗?我们也许可以结合lookarounds和嵌套引用,并具有与如工作模式String.matches来匹配字符串一样ab,aabb,aaabbb,等?

参考

相关问题

java regex lookaround capturing-group nested-reference

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

如何在JavaScript Regexp中捕获任意数量的组?

我希望这行JavaScript:

"foo bar baz".match(/^(\s*\w+)+$/)
Run Code Online (Sandbox Code Playgroud)

返回类似的东西:

["foo bar baz", "foo", " bar", " baz"]
Run Code Online (Sandbox Code Playgroud)

但它只返回最后捕获的匹配:

["foo bar baz", " baz"]
Run Code Online (Sandbox Code Playgroud)

有没有办法获得所有捕获的匹配?

javascript regex repeat capturing-group

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

这个django正则表达式意味着什么?`?P`

我在urls.py中有以下正则表达式,我想知道这意味着什么.特别(?P<category_slug>是正则表达式的一部分.

r'^category/(?P<category_slug>[-\w]+)/$

python regex django capturing-group

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

使用正则表达式的Scala捕获组

假设我有这段代码:

val string = "one493two483three"
val pattern = """two(\d+)three""".r
pattern.findAllIn(string).foreach(println)
Run Code Online (Sandbox Code Playgroud)

我希望findAllIn只返回483,但相反,它返回了two483three.我知道我可以使用unapply只提取那部分,但我必须有一个整个字符串的模式,如:

 val pattern = """one.*two(\d+)three""".r
 val pattern(aMatch) = string
 println(aMatch) // prints 483
Run Code Online (Sandbox Code Playgroud)

有没有另一种方法来实现这一点,而不使用java.util直接的类,而不使用unapply?

regex string scala capturing-group

63
推荐指数
5
解决办法
5万
查看次数

这个正则表达式如何找到三角形数字?

这是一系列教育正则表达式文章的一部分,这是对嵌套引用概念的温和介绍.

前几个三角形数字是:

 1 = 1
 3 = 1 + 2
 6 = 1 + 2 + 3
10 = 1 + 2 + 3 + 4
15 = 1 + 2 + 3 + 4 + 5
Run Code Online (Sandbox Code Playgroud)

有很多方法可以检查数字是否为三角形.有一种有趣的技术使用正则表达式如下:

  • 给定n,我们首先创建一个长度为n的字符串,其中填充相同的字符
  • 然后我们将此字符串与模式匹配 ^(\1.|^.)+$
    • 当且仅当此模式与字符串匹配时,n为三角形

以下是一些片段,表明它适用于多种语言:

PHP(在ideone.com上)

$r = '/^(\1.|^.)+$/';

foreach (range(0,50) as $n) {
  if (preg_match($r, str_repeat('o', $n))) {
     print("$n ");
  }
}
Run Code Online (Sandbox Code Playgroud)

Java(在ideone.com上)

for (int n = 0; n <= 50; …
Run Code Online (Sandbox Code Playgroud)

c# java regex capturing-group nested-reference

42
推荐指数
1
解决办法
2253
查看次数

获取JavaScript正则表达式中每个捕获的索引

我想匹配像一个正则表达式/(a).(b)(c.)d/使用"aabccde",并获得以下信息反馈:

"a" at index = 0
"b" at index = 2
"cc" at index = 3
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?String.match返回匹配列表和完整匹配开始的索引,而不是每个捕获的索引.

编辑:一个不适用于普通indexOf的测试用例

regex: /(a).(.)/
string: "aaa"
expected result: "a" at 0, "a" at 2
Run Code Online (Sandbox Code Playgroud)

注意:问题类似于Javascript Regex:如何查找每个子表达式的索引?,但我不能修改正则表达式,使每个子表达式成为一个捕获组.

javascript regex capturing-group

28
推荐指数
4
解决办法
8771
查看次数

正则表达式可选捕获组?

经过几个小时的搜索,我决定问这个问题.为什么这个正则表达式:^(dog).+?(cat)?不起作用,因为我认为它应该工作(捕获第一只狗和猫,如果有的话)?我在这里错过了什么?

dog, cat
dog, dog, cat
dog, dog, dog
Run Code Online (Sandbox Code Playgroud)

regex optional capturing-group

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

Scala正则表达式命名为捕获组

scala.util.matching.Regex trait MatchData中我看到支持组名,我认为这与(Regex Named Capturing Groups)有关

但是由于Java在版本7之前不支持组名,因为我理解它(参考),Scala版本2.8.0(Java HotSpot(TM)64位服务器VM,Java 1.6.)给了我这个例外:

scala> val pattern = """(?<login>\w+) (?<id>\d+)""".r
java.util.regex.PatternSyntaxException: Look-behind group does not have an obvio
us maximum length near index 11
(?<login>\w+) (?<id>\d+)
           ^
        at java.util.regex.Pattern.error(Pattern.java:1713)
        at java.util.regex.Pattern.group0(Pattern.java:2488)
        at java.util.regex.Pattern.sequence(Pattern.java:1806)
        at java.util.regex.Pattern.expr(Pattern.java:1752)
        at java.util.regex.Pattern.compile(Pattern.java:1460)
Run Code Online (Sandbox Code Playgroud)

所以问题是Scala支持的命名捕获组?如果是这样的话有什么例子吗?

regex string scala pattern-matching capturing-group

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