2012-08-22 23 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上对您的示例文本进行了测试。

相关问题