C#.NET Regex在标点后找到空格

时间:2012-07-27 03:20:13

标签: .net regex regex-negation

这是我目前的正则表达式:[^\s][\.,\?!:][\w]。 我需要检查每个标点符号后面是否有空格,例如[.,!:?]。 但我有一个问题,我签入的文件类型是*.sgm,所以有一些类似的标签:

<at.cit><at.cit>> </at.cit> <case.cit><lit> </lit></case.cit>

例如:

<ptext>Text.Text<at.cit>Text</at.cit></ptext>

所以我只需匹配"t.T",因为我们需要一段时间之后的空格。但我的正则表达式会找到"t.T""t.c"以及"t.c"。如何消除这些标签?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

同意其他评论员的意见,你应该使用一个库来解析C#中的格式。如果由于某种原因你绝对不得不使用正则表达式来破解它,你可以使用以下内容:

>(?<Text>([\w]*(?<Hit>\.\S))+[\w]*)<

答案 1 :(得分:0)

\S[.,?!:]\w(?!(?<=<[^<>]*)(?=[^<>]*>))

如果当前将其放置在标记中,那么lookbehind - (?<=<[^<>]*) - 和lookahead - (?=[^<>]*>) - 都将成立。将它们包裹在负向前瞻中会阻止标记内的匹配。