好吧,我有一個多行字符串,我正試着做一些清理工作。正則表達式替換,但只在兩個模式之間
每一行可能是也可能不是大塊引用文本的一部分。例如:
This line is not quoted.
This part of the line is not quoted 「but this is.」
This one is not quoted either.
「This entire line is quoted」
Not quoted.
「This line is quoted
and so is this one
and so is this one.」
This is not quoted 「but this is
and so is this.」
我需要一個正則表達式替換,將未包裹的硬包裹引述線,即,替換爲「\ r \ n」個具有空間,但只之間的彎引號。
下面是它看起來應該更換後:(注意最後兩行是如何多行輸入文本)
This line is not quoted.
This part of the line is not quoted 「but this is.」
This one is not quoted either.
「This entire line is quoted」
Not quoted.
「This line is quoted and so is this one and so is this one.」
This is not quoted 「but this is and so is this.」
約束
- 理想的情況下需要一個正則表達式替換調用
- 使用.NET RegEx庫
- 報價是總是開始/結束捲菸報價,而不是簡單的雙'剔'(「),這應該使這更容易一些。
重要的約束
這不是直接的.NET代碼,我填充的「searchfor/replacewith」字符串,然後通過RegEx.Replace稱爲表。我沒有通過捕獲組添加自定義代碼像匹配評估者,循環的能力,等等。
當前的答案到目前爲止,沿着線的東西:
r.Replace("(?<=「)\r\n(?=」)", " ")
很顯然,我不是甚至關閉。
相同的邏輯可以應用於編程代碼中塊註釋的顏色編碼 - 塊註釋內的任何內容都不會與註釋外的內容一樣對待。 (代碼是有點棘手,因爲開始/結束塊註釋分隔符也可以合法存在於一個文字字符串中,這個問題我不必在這裏處理。)
你能提供任何約束的原因,特別是前兩個? – MarkusQ 2009-03-03 21:45:09
補充...這不是自定義代碼,它是我編寫的通用解析/清理工具,它是從數據庫進行表驅動的。對於爲這個特定問題編寫一次性代碼並不容易。 – richardtallent 2009-03-03 22:55:35