Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
.net 优先匹配_.net_Regex - Fatal编程技术网

.net 优先匹配

.net 优先匹配,.net,regex,.net,Regex,我有以下几种情况 F:xxxx xxxx# F:xxxx xxxx 如果我的字符串在F:之后以前面的散列结尾,我想匹配它 直到散列 如果我的字符串前面没有散列,它将一直匹配到第一个 \b 所以我想出了以下两个表达 F:(.+?)(?=#) F:(.+?)(?=\b) 是否可以组合这两个表达式并赋予哈希更高的优先级,我应该在正则表达式中寻找什么概念?您可以使用正则表达式提供的条件,如 ^F:(?(?=.*#$).*$|\w*) 正则表达式分解 .net代码 ^ #Start of s

我有以下几种情况

F:xxxx xxxx#
F:xxxx xxxx
  • 如果我的字符串在F:之后以前面的散列结尾,我想匹配它 直到散列
  • 如果我的字符串前面没有散列,它将一直匹配到第一个 \b
所以我想出了以下两个表达

F:(.+?)(?=#)
F:(.+?)(?=\b)
是否可以组合这两个表达式并赋予哈希更高的优先级,我应该在正则表达式中寻找什么概念?

您可以使用正则表达式提供的条件,如

^F:(?(?=.*#$).*$|\w*)
正则表达式分解

.net代码

^ #Start of string
 F: #Match F: literally
  (? #Conditional regex begin
    (?=.*#$) #if-condition. # is in end of string
     .*$ #if above is true match entire string
     |
    \w* #else match word character. You can use .+?\b also
  )
var pattern = "(?m)^F:(?(?=.*#$).*$|\\w*)";
var input = "F:xxxx xxxx#\nF:xxxx xxxx";
Regex rgx = new Regex(pattern);
Match match = rgx.Match(input);

while (match.Success) {
    Console.WriteLine(match.Groups[0].Value.Trim());
    match = match.NextMatch();
}