标签: capture-group

连续重复词的正则表达式

我是一个正则表达式新手,我无法弄清楚如何编写一个能够"匹配"任何重复连续单词的正则表达式,例如:

在巴黎的的春天.

并非是相关的.

你笑什么?是我的我的正则表达式不好?

是否有一个正则表达式将匹配上面的所有粗体字符串?

regex duplicates capture-group

99
推荐指数
7
解决办法
8万
查看次数

R中的正则表达式组捕获具有多个捕获组

在R中,是否可以从正则表达式匹配中提取组捕获?据我所知,没有一个grep,grepl,regexpr,gregexpr,sub,或gsub返回组拍摄.

我需要从编码的字符串中提取键值对:

\((.*?) :: (0\.[0-9]+)\)
Run Code Online (Sandbox Code Playgroud)

我总是可以做多个全匹配greps,或做一些外部(非R)处理,但我希望我能在R中完成所有操作.是否有一个功能或包提供这样的功能来执行此操作?

regex r capture capture-group

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

如何在Golang正则表达式中捕获组功能?

我正在将一个库从Ruby移植到Go,并且刚刚发现Ruby中的正则表达式与Go(谷歌RE2)不兼容.我注意到Ruby和Java(以及其他语言使用PCRE正则表达式(perl兼容,它支持捕获组)),因此我需要重新编写表达式,以便它们在Go中编译好.

例如,我有以下正则表达式:

`(?<Year>\d{4})-(?<Month>\d{2})-(?<Day>\d{2})`
Run Code Online (Sandbox Code Playgroud)

这应该接受如下输入:

2001-01-20
Run Code Online (Sandbox Code Playgroud)

捕获组允许将年,月和日捕获到变量中.为了获得每个组的价值,这很容易; 您只需使用组名索引返回的匹配数据,然后返回值.所以,例如获得年份,像这样的伪代码:

m=expression.Match("2001-01-20")
year = m["Year"]
Run Code Online (Sandbox Code Playgroud)

这是我在表达式中使用很多的模式,所以我需要做很多重写.

那么,有没有办法在Go regexp中获得这种功能; 我该如何重写这些表达式?

regex go capture-group

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

捕获不在NSRegularExpression中工作的组

为什么此代码仅吐出整个正则表达式匹配而不是捕获组?

输入

@"A long string containing Name:</td><td>A name here</td> amongst other things"
Run Code Online (Sandbox Code Playgroud)

预期产出

A name here
Run Code Online (Sandbox Code Playgroud)

实际输出

Name:</td><td>A name here</td>
Run Code Online (Sandbox Code Playgroud)

NSString *htmlString = @"A long string containing Name:</td><td>A name here</td> amongst other things";
NSRegularExpression *nameExpression = [NSRegularExpression regularExpressionWithPattern:@"Name:</td>.*\">(.*)</td>" options:NSRegularExpressionSearch error:nil];

NSArray *matches = [nameExpression matchesInString:htmlString
                                  options:0
                                    range:NSMakeRange(0, [htmlString length])];
for (NSTextCheckingResult *match in matches) {
    NSRange matchRange = [match range];
    NSString *matchString = [htmlString substringWithRange:matchRange];
    NSLog(@"%@", matchString);
}
Run Code Online (Sandbox Code Playgroud)

代码取自Apple文档.我知道还有其他库可以做到这一点,但我想坚持使用内置的任务.

regex objective-c capture-group ios nsregularexpression

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

为什么re.groups()不会为我的正确匹配组提供任何东西?

当我运行此代码时:

print re.search(r'1', '1').groups() 
Run Code Online (Sandbox Code Playgroud)

我得到了结果().但是,.group(0)给我一个匹配.

不应该groups()给我一些包含比赛的东西?

更新:感谢您的回答.因此,这意味着,如果我这样做re.search(),没有分组,我必须使用groups(0)获得比赛?

python regex object match capture-group

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

C++ 11正则表达式按名称捕获组

我正在将基于boost的正则表达式转换为C++ 11正则表达式.我有一个名为的捕获组url:

\s*?=\s*?(("(?<url>.*?)")|('?<url>.*?)'))
Run Code Online (Sandbox Code Playgroud)

有了提升,如果你有一个,smatch你可以打电话match.str("url")来获取名称的捕获组.有了std::smatch,我只看到索引的子匹配.

如何使用std :: smatch类访问url捕获?

regex capture-group c++11

11
推荐指数
1
解决办法
9663
查看次数

正则表达式:捕获捕获组中的组

介绍

(如果你厌倦了介绍,你可以跳到怎么办)

这个问题并不是针对VBScript的(我只是在这种情况下使用它):我想找到一般正则表达式用法的解决方案(包括编辑器).

这开始于我想要创建示例4的改编,其中3个捕获组用于在MS Excel中跨3个单元分割数据.我需要捕获一个完整的模式,然后在其中捕获3个其他模式.然而,在同一个表达式中,我还需要捕获另一种模式并再次捕获其中的3种其他模式(是的,我知道......但在指向nutjob手指之前,请完成阅读).

我首先考虑了命名捕获组,然后我意识到我不应该"混合命名和编号的捕获组",因为它不推荐«因为风格与组的编号方式不一致».

然后我查看了VBScript SubMatches«non- capture »,我得到了针对特定案例的工作解决方案:

For Each C In Myrange
    strPattern = "(?:^([0-9]+);([0-9]+);([0-9]+)$|^.*:([0-9]+)\s.*:([0-9]+).*:([a-zA-Z0-9]+)$)"

    If strPattern <> "" Then
        strInput = C.Value

        With regEx
            .Global = True
            .MultiLine = True
            .IgnoreCase = False
            .Pattern = strPattern
        End With

        Set rgxMatches = regEx.Execute(strInput)

        For Each mtx In rgxMatches
            If mtx.SubMatches(0) <> "" Then
                C.Offset(0, 1) = mtx.SubMatches(0)
                C.Offset(0, 2) = …
Run Code Online (Sandbox Code Playgroud)

regex substring match capture-group

8
推荐指数
1
解决办法
6252
查看次数

正则表达式 - 重复捕获组

我试图找出如何comma-separated在以下url字符串中的值上重复捕获组:

id=1,2;name=user1,user2,user3;city=Oakland,San Francisco,Seattle;zip=94553,94523;

我正在使用这RegExp是我想要的返回结果,除了值,因为它们是动态的,即.可能是url参数中的2,3,4等用户,并且想知道我是否可以为每个值而不是一个捕获组创建user1,user2,user3捕获组.

正则表达式: (^|;|:)(\w+)=([^;]+)*

这是使用RegExp在线的现场演示

示例输出:

  • 第1组 - (分号,冒号)
  • Group2 - (密钥即.id,名称,城市,邮编)
  • Group3 - (value1)
  • Group4 - (value2)*如果存在
  • Group5 - (value3)*如果存在
  • Group6 - (value4)*如果存在

等...基于我之前解释过的动态值.

问题:我的表达式错误我正在使用*循环来重复模式?

javascript regex capture-group

8
推荐指数
1
解决办法
5797
查看次数

在R的正则表达式中是否有等效的"&"用于反向整个匹配

当我使用vim时,我经常使用&反向替换整个匹配.例如,以下内容将"foo"的所有实例替换为"foobar":

%s/foo/&bar/g
Run Code Online (Sandbox Code Playgroud)

这里的好处是懒惰:我不必在匹配中键入括号,我只需要为替换中的反向引用键入一个字符而不是两个字符.也许更重要的是,在我输入比赛时,我没有弄清楚我的背叛,减少了认知负担.

是否有一个等同于&我在R的正则表达式中使用vim(可能使用perl = T参数)?

regex backreference r capture-group

6
推荐指数
1
解决办法
101
查看次数

在Perl中替换特定捕获组而不是整个正则表达式

我有一个带有捕获组的正则表达式,它在更广泛的上下文中匹配我想要的.然后,我将捕获组$1用于满足我的需求.这很简单.

但是,s///当我只想用替代品替换内容而$1不是整个正则表达式时,如何使用捕获组?

谢谢!
-F

regex perl replace capture-group

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