-3

这是我当前的正则表达式:[^\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"and"t.c""t.c"。我怎样才能消除这些标签?

感谢你的帮助。

4

3 回答 3

1

我相信您正在寻找 regex (?<![<\/])\b\w*(\w[.,?!:]\w)\w*\b(?!\>)

于 2012-07-27T14:53:19.103 回答
0

同意其他评论员的意见,您应该使用为解析 C# 格式而制作的库。如果出于某种原因您绝对必须使用正则表达式破解它,您可以使用以下内容:

>(?<Text>([\w]*(?<Hit>\.\S))+[\w]*)<
于 2012-07-27T04:49:56.720 回答
0
\S[.,?!:]\w(?!(?<=<[^<>]*)(?=[^<>]*>))

如果当前将它定位在标签内,则后向(?<=<[^<>]*)- 和前瞻 -(?=[^<>]*>)都将为真。将它们包装在负前瞻中可以防止标签内的匹配。

于 2012-07-27T20:22:25.207 回答