2012-08-22 53 views
1

我有用德語寫的大型.txt文件。這是許多人講話的記錄。當使用單詞的縮寫形式時,該單詞的正確形式將寫在括號內,或放在其中。我想列舉一下這個.txt中存在的所有這些例子。我嘗試了一些正則表達式,但似乎無法使其突出顯示整個「單詞」。記事本++:從包含一組圓括號的很長的字符串中提取所有單詞

任何想法?

這裏是我想提取的詞中的.txt的一部分突出:

ICH HAB(e)中上午Achtundzwanzigsten achten neunzehnhundertneunzig Geburtstag。此外,您還可以查看,更改,更改,更改和刪除。 Hallo wie gehts (geht es) dir。 Na was machst (machst du) den jetzt heut(e)。恩,恩,呃,是不是? Stör(電子) ich? JA DAS 是(T),嗯,所以,würd(E) ICH DAS所以薩根....

謝謝!

回答

2

如果我也瞭解你的需求,怎麼樣:

(\w+\(\w+\))| \([\w\s]+\) 

說明:

The regular expression: 

(?-imsx:(\w+\(\w+\))| \([\w\s]+\)) 

matches as follows: 

NODE      EXPLANATION 
---------------------------------------------------------------------- 
(?-imsx:     group, but do not capture (case-sensitive) 
         (with^and $ matching normally) (with . not 
         matching \n) (matching whitespace and # 
         normally): 
---------------------------------------------------------------------- 
    (      group and capture to \1: 
---------------------------------------------------------------------- 
    \w+      word characters (a-z, A-Z, 0-9, _) (1 or 
          more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    \(      '(' 
---------------------------------------------------------------------- 
    \w+      word characters (a-z, A-Z, 0-9, _) (1 or 
          more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    \)      ')' 
---------------------------------------------------------------------- 
)      end of \1 
---------------------------------------------------------------------- 
|      OR 
---------------------------------------------------------------------- 
          ' ' 
---------------------------------------------------------------------- 
    \(      '(' 
---------------------------------------------------------------------- 
    [\w\s]+     any character of: word characters (a-z, A- 
          Z, 0-9, _), whitespace (\n, \r, \t, \f, 
          and " ") (1 or more times (matching the 
          most amount possible)) 
---------------------------------------------------------------------- 
    \)      ')' 
---------------------------------------------------------------------- 
)      end of grouping 
+0

這似乎沒有在Notepad ++中提供的示例文本上工作。我正在使用v5.9.2 – Kash

+0

@Kash:你需要V6.0 + – Toto

+0

這個解釋是從什麼地方自動生成的? – Retsam

0

這個正則表達式(之前發現()之間包含的一切所有內容也和其先前的空間特徵:

[^ ]*\([^)]*\) 

我們您的文字轉換成一個漂亮的列表:

  • 打開查找/替換對話框(按Ctrl-H)
  • 查找內容:
  • 替換爲:\1\n
  • 「正則表達式「與」匹配換行符「選中
  • 用光標在文件起始處按下」全部替換「(Ctrl-Home)
  • 忽略或刪除l ast line

現在,您可以在單獨的行上找到所有這些單詞的所有列表。

+0

但它不會捕獲像「freu(sd)ich」 – Kash

+0

我不會說德語,而且這不是在原始測試數據,這可以通過在當前正則表達式的末尾添加'[^] *'來完成。或''[^ \ s \。\,\; \?\!] *'就像您要擺脫可能位於單詞末尾的其他標點符號一樣。 –

0

Notepad ++使用的正則表達式可能不符合POSIX標準,因此不支持字邊界。 (ATLEAST v5.9.2不支持它) 試試這個正則表達式:

[^\s]*\([^)]*\)[^\s\.\,\;\?\!]* 
  • [^\s]*:一個字(製表符,空格等前不匹配任何空白檢測字的開始..)
  • \([^)]*\):匹配支架,其含量
  • [^\s\.\,\;\?\!]*:檢測由不匹配任何空格或可能標點符號結尾的單詞的。

您可以通過在單詞前後添加更多標點符號(如引號)來擴展它。
成功在Notepad ++ v5.9.2上對您的示例文本進行了測試。

相關問題