Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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_Preg Match - Fatal编程技术网

C# 在多个前缀后用空格匹配单词

C# 在多个前缀后用空格匹配单词,c#,regex,preg-match,C#,Regex,Preg Match,我有以下字符串 D_Doc Name L_Linked Doc Q_1_5 或 我很难创建一个正则表达式来匹配以下内容 Doc Name Linked Doc 1_5 or 5 D_Doc Name Doc Q_1_5 D_Doc Name Doc Q_5 D_Doc Name L_Linked Doc D_文件名始终存在 L_u和Q_u不是 字符串也可能如下所示 Doc Name Linked Doc 1_5 or 5 D_Doc Name Doc Q_1_5 D_Doc Name D

我有以下字符串

D_Doc Name L_Linked Doc Q_1_5

我很难创建一个正则表达式来匹配以下内容

Doc Name
Linked Doc
1_5 or 5
D_Doc Name Doc Q_1_5
D_Doc Name Doc Q_5
D_Doc Name L_Linked Doc
D_文件名始终存在 L_u和Q_u不是

字符串也可能如下所示

Doc Name
Linked Doc
1_5 or 5
D_Doc Name Doc Q_1_5
D_Doc Name Doc Q_5
D_Doc Name L_Linked Doc
我希望能够将这些比赛作为参考 匹配['DocName']或完全匹配的某种含义,这样我就知道找到了哪个匹配项,哪些不匹配


有什么建议吗?

也许正则表达式对于这个问题来说有点太多了,我会使用一个简单的string.Split(s.),然后我会逐个分析单词,可能会使用正则表达式作为最后一个单词。然而,最后一个字也很容易分割。我想只在数组上编写代码会更简单。

您的要求有点难以理解,但我认为这样做可以:

D(\w+)(\w+)(L(\w+))(\w+)(\w+)(\w+))

如果您想添加“命名组”(我假设使用的是合适的名称):


D_(?\w+)(\w+)(L_(?\w+))(?\w+)(?\w+)(?\S+))

如果我理解正确,您需要的正则表达式如下所示:

^D_(?<D>.*?)( L_(?<L>.*?))?( Q_(?<Q>.*))?$

所有这些情况的输出应该是什么?我希望匹配结果有1到3个值。基本上,在前缀之后和下一个(文档名称、链接文档、1_5或5)之前的所有内容,这是什么?D_文件名文件Q_5这里你会得到文件名文件,5只要我能说出匹配项的名称并检查有哪些匹配项就可以了。这是我一直在想的,我已经开始了,但我只是想看看正则表达式有多强大,或者它是否可能/更快。正则表达式可能非常强大,但如果你不是正则表达式专家,用它的语法表达东西有时会很困难,很烦人。string.Split的性能并不差,这些字符串并没有那么大。编写一个优化的正则表达式也不容易。因为您的代码中充满了if,我建议只使用数组:)