2
好了,还有很多的正则表达式,但一如既往,他们都不匹配我想要做的事。多行正则表达式替换
我有一个文本文件:
F00220034277909272011
H001500020003000009272011
D001500031034970000400500020000000025000000515000000000
D001500001261770008003200010000000025000000132500000000
H004200020001014209272011
D004200005355800007702200005142000013420000000000000000
D004200031137360000779000005000000012000000000000000000
H050100180030263709272011
D050100001876700006000300019500000025000000250000001500
D050100001247060000071500030000000025000000280000000000
D050100002075670000430400020000000025000000515000000000
D050100008342500007702600005700000010000000000000000700
D050100009460270000702100015205000025000000000000006205
D050100008135120000702400015000000010000000000000001000
D050100006938430000702200026700000010000000000000001000
D050100006423710008000200025700000000000000000000001000
D050100009488040008000600007175000000000000000000001000
D050100001299190000800100016300000000000000000000003950
D050100001244850000800400005407000000000000000000001607
D050100001216280000840200020000000000000001000000006200
D050100001216840000479000008175000000000000100000001000
D050100001265880000410200014350000000000000100000001000
D050100007402650002000300026700000000000000100000001000
D050100001305150002000200016175000000000001000000000000
D050100005435430000899700022350000000000001000000000000
D050100031113850000500200008200000000250000100000001000
,并用正则表达式多(.NET味的),我想要做一个替换,这样我得到:
H050100180030263709272011
D050100001876700006000300019500000025000000250000001500
D050100001247060000071500030000000025000000280000000000
D050100002075670000430400020000000025000000515000000000
D050100008342500007702600005700000010000000000000000700
D050100009460270000702100015205000025000000000000006205
D050100008135120000702400015000000010000000000000001000
D050100006938430000702200026700000010000000000000001000
D050100006423710008000200025700000000000000000000001000
D050100009488040008000600007175000000000000000000001000
D050100001299190000800100016300000000000000000000003950
D050100001244850000800400005407000000000000000000001607
D050100001216280000840200020000000000000001000000006200
D050100001216840000479000008175000000000000100000001000
D050100001265880000410200014350000000000000100000001000
D050100007402650002000300026700000000000000100000001000
D050100001305150002000200016175000000000001000000000000
D050100005435430000899700022350000000000001000000000000
D050100031113850000500200008200000000250000100000001000
,这样,基本上,我抓住了所有以[HD]0501
开头的东西,没有别的。
我知道这似乎更适合比赛,一个代替,但我会通过接受一个正则表达式模式串预先建立的引擎和正则表达式只替换字符串。
我能提供什么模式和替换字符串,让我想要的结果?多线正则表达式是一种硬编码配置?
我本来以为像这样的工作:
搜索: (?<Match>^[HD]0501\d+$)
,但这种匹配什么。
搜索: (?!^[HD]0501\d+$)
,但这相匹配的一堆空字符串,我想不出该怎么把用于替换字符串。
搜索: (?!(?<Omit>^[HD]0501\d+$))
“Group'Omit'not found”。
看来这应该是简单的,但一如既往,正则表达式设法让我觉得愚蠢。帮助将不胜感激。
这做到了。谢谢!我必须弄清楚它是如何做到的,但是这让我走了。 –
不客气@Jeremy,我还添加了对这种模式的简要说明。 –