Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 匹配正则表达式中的字符串_C#_Regex - Fatal编程技术网

C# 匹配正则表达式中的字符串

C# 匹配正则表达式中的字符串,c#,regex,C#,Regex,这是我要匹配的字符串: "t=0, data=00 00 00 f1 00 00 00 00". 以下工作: (@“^(t)=[0-9]+,(\s[0-9A-F-a-F]{2}{8}) 比赛: “t=0,00 00 00 f1 00 00” (@“^(t)=[0-9]+,\s\w+=”) 比赛: “t=0,data=“ 以下操作不起作用: (@“^(t)=[0-9]+,\s\w+=((\s[0-9A-F-a-F]{2}{8})”) 不匹配: “t=0,data=00 00 f1 00

这是我要匹配的字符串:

"t=0, data=00 00 00 f1 00 00 00 00". 
以下工作:

  • (@“^(t)=[0-9]+,(\s[0-9A-F-a-F]{2}{8})
    比赛:
    “t=0,00 00 00 f1 00 00”

  • (@“^(t)=[0-9]+,\s\w+=”)
    比赛:
    “t=0,data=“

以下操作不起作用:

  • (@“^(t)=[0-9]+,\s\w+=((\s[0-9A-F-a-F]{2}{8})”)
    不匹配:
    “t=0,data=00 00 f1 00 00”
这是我目前的代码:

Regex rgx = new Regex(@"^(t)=[0-9]+,\s\w+=((\s[0-9A-F-a-f]{2}){8})");
if(rgx.IsMatch(line.Trim())){
  //...
}

如果我很了解您的需求,您可以使用以下正则表达式:

Regex rgx = new Regex(@"(^t=[0-9]+,[a-z ]+=([A-Fa-f0-9]{2} ?){8})");
if(rgx.IsMatch(line.Trim())){
    //...
}
因此:

  • ^t=[0-9]+,[a-z]+=
    匹配十六进制数之前的所有内容
  • ([A-Fa-f0-9]{2}?{8}
    匹配8组2个十六进制字符,后跟或不后跟空格
所有内容都包含在
$1
变量中,因为括号与整行匹配。

对于(\s[0-9A-F-a-F]{2})要匹配=号后面的第一对数字,需要在=号和第一个数字之间留有空格。但你似乎不知道


也是(\s[0-9A-F-a-F]{2})正确吗?。我认为您需要删除F和a之间的“-”好的,为了匹配模式:

t=0, data=00 00 00 f1 00 00 00 00
我做了一些假设:

  • t=
  • data=
  • 您需要匹配组中的数据
那么这个模式将起作用:

^t=[0-9]++,\s*+data=(?<data>(?:[0-9a-f]{2}\s?){8})$
^(t)=[0-9]+,\s\w+=([0-9A-Fa-f]{2}(\s |$){8}
会起作用。 您在每两个数字后面放置了一个空格字符,但由于最后两个数字后面没有空格,正则表达式将不匹配。现在,正则表达式引擎可以在空白字符或字符串结尾之间进行选择

编辑:将单词边界更改为字符串的结尾


Edit2:另外,看看这个:

你能添加更多的好匹配的例子吗?还是只有一场比赛?如果只有一个匹配项,您可能希望查看一个只查找字符串而不使用正则表达式的函数。这是什么编程语言?Hugo Dozois-字符串更长,但我遇到了一个问题
public static void main(String[] args) throws SQLException {
    final String data = "t=0, data=00 00 00 f1 00 00 00 00";
    final Pattern pattern = Pattern.compile("^t=[0-9]++,\\s*+data=(?<data>(?:[0-9a-fA-F]{2}\\s?){8})$");
    final Matcher matcher = pattern.matcher(data);
    if (matcher.matches()) {
        System.out.println(matcher.group());
        System.out.println(matcher.group("data"));
    }
}
t=0, data=00 00 00 f1 00 00 00 00
00 00 00 f1 00 00 00 00