相关疑难解决方法(0)

如何将正则表达式与具有未知数量的组的分组匹配

我想在程序的输出日志上进行正则表达式匹配(在Python中).日志包含一些如下所示的行:

... 
VALUE 100 234 568 9233 119
... 
VALUE 101 124 9223 4329 1559
...
Run Code Online (Sandbox Code Playgroud)

我想捕获在以VALUE开头的第一次出现之后发生的数字列表.即,我希望它返回('100','234','568','9233','119').问题是我事先并不知道会有多少数字.

我试图用这个作为正则表达式:

VALUE (?:(\d+)\s)+
Run Code Online (Sandbox Code Playgroud)

这匹配线,但它只捕获最后一个值,所以我得到('119',).

python regex

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

如何使用正则表达式组查找多个事件?

为什么以下代码会导致:

'the'有1场比赛

并不是:

'the'共有3场比赛

using System;
using System.Text.RegularExpressions;

namespace TestRegex82723223
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "C# is the best language there is in the world.";
            string search = "the";
            Match match = Regex.Match(text, search);
            Console.WriteLine("there was {0} matches for '{1}'", match.Groups.Count, match.Value);
            Console.ReadLine();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# regex

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

正则表达式:重复捕获组

我必须从ASCII文本文件中解析一些表.这是一个部分样本:

QSMDRYCELL   11.00   11.10   11.00   11.00    -.90      11     11000     1.212
RECKITTBEN  192.50  209.00  192.50  201.80    5.21      34      2850     5.707
RUPALIINS   150.00  159.00  150.00  156.25    6.29       4        80      .125
SALAMCRST   164.00  164.75  163.00  163.25    -.45      80      8250    13.505
SINGERBD    779.75  779.75  770.00  773.00    -.89       8        95      .735
SONARBAINS   68.00   69.00   67.50   68.00     .74      11      3050     2.077
Run Code Online (Sandbox Code Playgroud)

该表由1列文本和8列浮点数组成.我想通过正则表达式捕获每一列.

我对正则表达式很新.这是我提出的错误的正则表达式模式:

(\S+)\s+(\s+[\d\.\-]+){8}
Run Code Online (Sandbox Code Playgroud)

但该模式仅捕获第一列和最后一列.RegexBuddy也会发出以下警告:

您重复了捕获组本身.该组将仅捕获最后一次迭代.在重复组周围放置捕获组以捕获所有迭代.

我已经咨询了他们的帮助文件,但我不知道如何解决这个问题.

如何单独捕获每列?

.net c# regex

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

awk从每一行中提取多个组

当模式在一行中多次匹配时,如何对所有匹配的组执行操作?

为了说明,我想搜索/Hello! (\d+)/并使用数字,例如,打印出来或将它们相加,以便输入

abcHello! 200 300 Hello! Hello! 400z3
ads
Hello! 0
Run Code Online (Sandbox Code Playgroud)

如果我决定将它们打印出来,我会期待它的输出

200
400
0
Run Code Online (Sandbox Code Playgroud)

regex awk grouping

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

命名的捕获多次匹配(Perl)

当我运行此代码时:

$_='xaxbxc';
if(/(x(?<foo>.))+/) {
    say "&: ", $&;
    say "0: ", $-{foo}[0];
    say "1: ", $-{foo}[1];
 }
Run Code Online (Sandbox Code Playgroud)

我明白了:

&: xaxbxc
0: c
1:
Run Code Online (Sandbox Code Playgroud)

我知道这是它应该如何工作,但我希望能够以某种方式得到所有匹配的列表('a', 'b', 'c')而不是最后一个匹配(c).我怎样才能做到这一点?

regex perl

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

使用Perl中的regex在字符串中获取多个匹配项

在阅读了这个类似的问题并多次尝试我的代码之后,我继续获得相同的不良输出.

让我们假设我正在搜索的字符串是"我昨天看到了wilma".正则表达式应该捕获每个单词后跟一个'a'及其可选的 5个后面的字符或空格.

我写的代码如下:

$_ = "I saw wilma yesterday";

if (@m = /(\w+)a(.{5,})?/g){
    print "found " . @m . " matches\n";

    foreach(@m){
        print "\t\"$_\"\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我继续获得以下输出:

found 2 matches
    "s"
    "w wilma yesterday"
Run Code Online (Sandbox Code Playgroud)

虽然我希望得到以下一个:

found 3 matches:
    "saw wil"
    "wilma yest"
    "yesterday"
Run Code Online (Sandbox Code Playgroud)

直到我发现里面的返回值@m$1$2,你可以注意到.

现在,由于/g标志已打开,我认为问题不在于正则表达式,我怎样才能获得所需的输出?

regex perl multiple-matches

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

如何根据 Perl 中的特定正则表达式将文件中的值分组到哈希中?

我有一个 .txt 文件,其中一列中包含数据,如下所示:

state_1
state_2
state_3
input_11
input_12
input_13
input_21
input_22
input_31
Run Code Online (Sandbox Code Playgroud)

我想根据这些标签的名称和编号将它们分组为哈希:

state_1:              # For state_1, we have all "input1x" data tags
  -input_11
  -input_12
  -input_13
state_2:              # For state_2, we have all "input2x" data tags
  -input_21
  -input_22
state_3:              # For state_3, we have all "input3x" data tags
  -input_31
Run Code Online (Sandbox Code Playgroud)

我尝试使用本例中的push函数来尝试将值作为数组强制放入哈希中,但我一直在寻找一种循环方法并根据正则表达式获取所需的哈希。push @{ $state{$inputs} }, $_;

我还研究了如何根据 regex 对数据进行分组,但是当我从 .txt 文件获取数据时,我仍然找不到对数据进行分组的方法。

我的问题是,我需要什么才能对这些标签进行相应的分组?

perl hash grouping

4
推荐指数
1
解决办法
154
查看次数

标签 统计

regex ×6

perl ×3

c# ×2

grouping ×2

.net ×1

awk ×1

hash ×1

multiple-matches ×1

python ×1