3

我需要关于 NOTEPAD++ 正则表达式的帮助。这看起来很简单……呃。

我有一个包含 4 列的 xls 文件,其中包含文本字符串(1 列 = 1 种语言)。当我将此文件中的一行复制到 NOTEPAD++ 时,我得到一个长字符串,其中所有语言都用制表符分隔。

Example:

This is a example. It's my first time here. Hello everybody. ... Last sentence. TAB Ésto es un ejemplo. Es la primera vez que busco respuesta aquí. Hola a todos. ... Última frase. TAB Substring_German01. Substring_German02. Substring_German03. ... Substring_GermanXX. TAB Substring_French01. Substring_French02. Substring_French03. ... Substring_FrenchXX.

在 NOTEPAD++中用\n替换\t我得到:

This is a example. It's my first time here. Hello everybody. ... Last sentence. 
Ésto es un ejemplo. Es la primera vez que busco respuesta aquí. Hola a todos. ... Última frase. 
Substring_German01. Substring_German02. Substring_German03. ... Substring_GermanXX. 
Substring_French01. Substring_French02. Substring_French03. ... Substring_FrenchXX.

如何使用正则表达式获取特定的子字符串???

所需结果:

搜索:正则表达式替换:\1

This is a example.
Ésto es un ejemplo.
Substring_German01.
Substring_French01.

搜索:正则表达式替换:\2

It's my first time here. Hello everybody.
Es la primera vez que busco respuesta aquí.
Substring_German02.
Substring_French02.

搜索:正则表达式替换:\3

Hello everybody.
Hola a todos.
Substring_German03.
Substring_French03.

谢谢 !

4

4 回答 4

0

使用以下替换模式:

(?:.*?\S[.!?]){0}\s*(.*?\S[.!?])(?:\s.*?TAB|(?!.*TAB)\s.*|\s*$)

(?:.*?\S[.!?]){1}\s*(.*?\S[.!?])(?:\s.*?TAB|(?!.*TAB)\s.*|\s*$)

(?:.*?\S[.!?]){2}\s*(.*?\S[.!?])(?:\s.*?TAB|(?!.*TAB)\s.*|\s*$)

(?:.*?\S[.!?]){3}\s*(.*?\S[.!?])(?:\s.*?TAB|(?!.*TAB)\s.*|\s*$)

...ETC。

...并将每场比赛替换为 \1\n

于 2012-06-28T14:31:57.557 回答
0

尝试这个:

([^ ][^. ]).*?\.

使用此 RegEx 搜索处理第二个文本框中的内容(将 \t 替换为 \n 后),您应该正确获取子字符串。

它还将避免我猜您不想要的“...”部分。

于 2012-07-02T09:03:46.893 回答
0

(.*) (.*) ...你可以在你的正则表达式中使用括号并访问它们\1 \2 \n...

例子Hello Dude SomeFixedString How Are You

搜索(.*)SomeFixedString(.*)

用。。。来代替\2 foooo \1

会给你

How Are You foooo Hello Dude

于 2012-06-28T12:46:18.667 回答
-1

为什么不先将 xls 文件另存为 XML 电子表格?然后,您已经将每个单元格放在自己的行上。然后只需编写代码以删除标签。

于 2013-07-16T18:51:59.170 回答