我使用perl6正则表达式匹配长度最小的重复任意字符序列。
阅读完https://docs.perl6.org/language/regexes#Capture_numbers并调整给出的示例后,我使用“外部变量”提出了以下代码:
#uses an additional variable $c
perl6 -e '$_="bbaaaaawer"; /((.){} :my $c=$0; ($c)**2..*)/ && print $0';
#Output: aaaaa
Run Code Online (Sandbox Code Playgroud)
为了帮助说明我的问题,在perl5中使用了类似的正则表达式:
#No additional variable needed
perl -e ' $_="bbaaaaawer"; /((.)\2{2,})/ && print $1';
Run Code Online (Sandbox Code Playgroud)
有人可以启发我“储蓄” $0到$c空缺的需求/好处{}吗?是否有匹配的替代(更好/类似)的perl6正则表达式?
提前致谢。
我需要从字符串中提取元组
例如 (1,1,A)(2,1,B)(1,1,C)(1,1,D)
并认为一些正则表达式:
String tupleRegex = "(\\(\\d,\\d,\\w\\))*";
Run Code Online (Sandbox Code Playgroud)
会工作,但它只是给了我第一个元组.什么是正确的正则表达式来匹配字符串中的所有元组.
我试图在Python中使用正则表达式来查找和打印多行搜索中的所有匹配行.我正在搜索的文本可能具有以下示例结构:
AAA ABC1 ABC2 ABC3 AAA ABC1 ABC2 ABC3 ABC4 ABC AAA ABC1 AAA
从中我想要检索至少出现一次并且前面有AAA的ABC*.
问题是,尽管该团体抓住了我想要的东西:
match = <_sre.SRE_Match object; span=(19, 38), match='AAA\nABC2\nABC3\nABC4\n'>
Run Code Online (Sandbox Code Playgroud)
...我只能访问该组的最后一场比赛:
match groups = ('AAA\n', 'ABC4\n')
Run Code Online (Sandbox Code Playgroud)
下面是我用于此问题的示例代码.
#! python
import sys
import re
import os
string = "AAA\nABC1\nABC2\nABC3\nAAA\nABC1\nABC2\nABC3\nABC4\nABC\nAAA\nABC1\nAAA\n"
print(string)
p_MATCHES = []
p_MATCHES.append( (re.compile('(AAA\n)(ABC[0-9]\n){1,}')) ) #
matches = re.finditer(p_MATCHES[0],string)
for match in matches:
strout = ''
gr_iter=0
print("match = "+str(match))
print("match groups = "+str(match.groups()))
for group in match.groups():
gr_iter+=1
sys.stdout.write("TEST GROUP:"+str(gr_iter)+"\t"+group) # test …Run Code Online (Sandbox Code Playgroud) 我正在解决一个问题,从字符串中删除重复的单词.例如,
输入: Goodbye bye bye world world world
输出: Goodbye bye world
我有一个来自在线资源的工作模式,但我无法理解其中的所有内容.
String pattern = "\\b(\\w+)(\\b\\W+\\b\\1\\b)*";
Run Code Online (Sandbox Code Playgroud)
这是我的理解:
\\b是匹配单词bounaries(\\w+) 匹配一个或多个字符在这个表达式中: (\\b\\W+\\b\\1\\b)*
一个.\\b匹配单词边界
湾 \\W+匹配一个或多个非单词字符
C.\\b再次匹配一个单词bounary
d.\\1??? 我不知道这是为了什么,但如果没有这个,它就无法运作
C.\\b再次匹配一个单词bounary
正如你所看到的,我的主要困惑是关于第3项,尤其是\\1.有谁能更清楚地解释一下?