【发布时间】:2012-10-15 10:54:23
【问题描述】:
我正在编写一个正则表达式,它将从 EDIFACT UN 代码列表中提取各种信息。由于有数以万计的代码,我不想全部输入,所以我决定使用正则表达式来解析文本文件并提取出我需要的位。文本文件的结构使我可以轻松识别所需的位。
我使用Regex Hero 创建了以下正则表达式来测试它,但我无法让它匹配所有内容,直到 codeComment 组的双换行符。我试过使用字符类 [^\n\n] 但这仍然不匹配双换行符。
注意:我在 Regex Hero 上选择了多行选项。
(?<element>\d+)\s\s(?<elementName>.*)\[[B|C|I]\]\s+Desc: (?<desc>[^\n]*\s*[^\n]*)
^\s*Repr: (?<type>a(?:n)?)..(?<length>\d+)
^\s*(?<code>\d+)\s*(?<codeName>[^\n]*)
^\s{14}(?<codeComment>[^\n]*)
这是我用来匹配的示例文本。
----------------------------------- ----------------------
-
1073 文档行动作代码[B]
Desc: 指示与 a 行相关联的操作的代码
文档。Repr: an..3
1 包含在文件/交易中
文档行包含在
文件/交易。
也应该捕捉到这一点。2 从文档/交易中排除
文档行被排除在
文件/交易。
我想要的是 codeComment 包含以下内容:
The document line is included in the
document/transaction.
should capture this as well.
但它只是提取第一行:
The document line is included in the
【问题讨论】: