在Notepad++中从文本字符串中逗号或句点字符后获取特定子字符串

4
我需要关于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个回答

1

您可以在正则表达式中使用括号(.*) (.*) ...,并通过\1 \2 \n...访问它们。

例如:Hello Dude SomeFixedString How Are You

搜索(.*)SomeFixedString(.*)

替换为\2 foooo \1

将会得到:

How Are You foooo Hello Dude


1
我尝试过了,但是当FixedString是点字符“.”时它不起作用。所以如果我这样做:搜索:(.).(.).(.).(.). 替换:\1我得到的是完整的字符串,而不是第一个子字符串... - user1488530
你应该使用 \ 来转义 .。 - mons droid

0

试试这个:

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

使用这个正则表达式搜索,可以正确地获取第二个文本框中替换 \t 为 \n 后的内容子字符串。

这也将避免 "..." 部分,我猜你不想要它。


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*$)

...等等。

...并将每个匹配项替换为 \1\n


这些搜索语句在notepad++中可行吗?程序显示“找不到文本”…谢谢答复。 - user1488530
@user1488530 - 我已经更新了我的答案。当时我误解了你的问题,因为我将TAB编码为制表符键字符而不是该字符串。现在应该没问题了,我已经在Notepad++中测试了这些正则表达式。 - Ωmega

-1
为什么不先将您的xls文件保存为XML电子表格呢?这样,每个单元格都会有自己的一行。然后,只需编写代码来移除标签即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接