我有以下字符串
D_Doc Name L_Linked Doc Q_1_5
或
D_Doc Name L_Linked Doc Q_5
我很难创建一个匹配以下
的正则表达式Doc Name
Linked Doc
1_5 or 5
D_Doc名称始终存在 L_和Q_不是
字符串也可能如下所示
D_Doc Name Doc Q_1_5
D_Doc Name Doc Q_5
D_Doc Name L_Linked Doc
我希望能够将比赛作为参考 匹配['DocName']或一些完整的含义,所以我知道找到哪个匹配,哪个不匹配。
有什么建议吗?
答案 0 :(得分:1)
如果我理解正确,你想要的正则表达式是这样的:
^D_(?<D>.*?)( L_(?<L>.*?))?( Q_(?<Q>.*))?$
它为某些测试输入产生以下结果:
Input D L Q
D_Doc Name L_Linked Doc Q_1_5 Doc Name Linked Doc 1_5
D_Doc Name Doc Q_1_5 Doc Name Doc 1_5
D_Doc Name Doc Q_5 Doc Name Doc 5
D_Doc Name L_Linked Doc Doc Name Linked Doc
D_Doc Name Doc Q_5 Doc Name Doc 5
答案 1 :(得分:0)
也许正则表达式对于这个问题有点太多了,我会使用一个简单的字符串.Split(s,'')然后我将逐个分析单词,也许用正则表达式代表最后一个单词。最后一句话也很容易分开。我想在编写代码时编写代码会更简单。
答案 2 :(得分:0)
您的要求有点难以破译,但我认为这样做会:
D_(\w+) (\w+) (L_(\w+) )?(\w+)( (Q_)?(\w+))?
如果你想添加“命名组”(我假设是合适的名字):
D_(?<Doc>\w+) (?<DocName>\w+) (L_(?<Linked>\w+) )?(?<LinkedDoc>\w+)( (Q_)?(?<Q>\S+))?