2012-07-27 25 views
-3

這是我目前使用的正則表達式:[^\s][\.,\?!:][\w]。 我需要檢查每個標點後面是否有空格,例如[.,!:?]。 但我有一個問題,文件的,我籤的類型是*.sgm,所以那裏有一定的標記,是這樣的:C#.NET正則表達式在標點符號後尋找空格

<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"。我如何消除這些標籤?

感謝您的幫助。

+0

這看起來非常類似於(X)HTML,這意味着正則表達式不是一個好的解決方案。 – 2012-07-27 03:26:07

+0

你解析XML還是HTML?如果是這樣,那就已經有解析器了。另外,不要使用HTML的正則表達式。 – 2012-07-27 03:26:35

+2

你會讓人生氣 - 詢問如何用正則表達式解析HTML,XHTML或XML – 2012-07-27 03:32:59

回答

1

我相信你正在尋找的正則表達式(?<![<\/])\b\w*(\w[.,?!:]\w)\w*\b(?!\>)

+0

這看起來不錯,接近正確的答案,但我嘗試做一個標籤,例如:等等,以及正則表達式匹配test.gif。但謝謝你的答案。乾杯! – neo 2012-07-28 05:16:47

+0

歐米茄感謝您的幫助!我現在解決這個問題是因爲你的答案。非常感謝!乾杯! :) – neo 2012-07-28 05:26:21

0

與其他評論員一致,你應該使用一個用於解析C#格式的庫。如果你絕對有某種原因,你可以使用下面的正則表達式來破解它:

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

如果當前位置是一個標籤裏面,回顧後 - (?<=<[^<>]*) - 與前瞻 - (?=[^<>]*>) - 都將是真實的。將它們包裝在負面預覽中可防止標籤內部的匹配。