在以哈希(#)开头的行上匹配多个以空格分隔的字符串

时间:2015-07-20 12:48:15

标签: php regex

我想将以下行中的参数与正则表达式匹配:

...
# MHz  S  MA  R 50
...

使用^#\s([a-zA-Z0-9]+)\s,我可以匹配行和第一个参数,但不匹配其他参数。

请参阅my example here

3 个答案:

答案 0 :(得分:1)

使用以下regex

^#\s+[\w\s]+

RegEx101 Demo

答案 1 :(得分:1)

您可以使用\S匹配非空白字符并重复捕获必要的次数:

^#\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)\s*(\S+)

请参阅demo

这些值将进入捕获的组。

或者,您可以将所有这些内容与

匹配
(?:^#|(?<!^)\G)[ ]*([^\s\n]+)(?=.*$)

请参阅another demo

答案 2 :(得分:0)

你有一个重复的空白模式,后跟你想要捕获的非空格,所以这应该可以解决这个问题:

`^#(?:\s*(\S+))+$`

样品:

var re = new Regex(@"^#(?:\s*(\S+))+$");
var matches = re.Matches("# MHz  S  MA  R 50");
Console.WriteLine(matches);

输出:

enter image description here