2013-09-23 55 views
0


即时通讯使用Jedit和正则表达式替换文件中的几个代码中的一些文本。正则表达式与完整文本

有很多相似的开始和结束,如:

Something 
Text Sample 
Something Else 

或者

Something 
I dont know what else 
Something Else 

然后我搜索使用:

Something 
[^‰\r\n]* 
Something Else 

而且我要全部更换与:

Something 
<Tuv Lang="EN-US">**ORIGINAL TEXT**</Tuv><Tuv Lang="PT-BR"> </Tuv> 
Something Else 

所以它会在开始和中间文本行的末尾添加一些代码,这些代码并不总是相等的。

我已经尝试使用:

Something 
<Tuv Lang="EN-US">[^‰\r\n]*</Tuv><Tuv Lang="PT-BR"> </Tuv> 
Something Else 

但没有成功。有人可以告诉我应该如何使用正确的正则表达式?

在此先感谢!

马蒂亚斯

回答

0

尝试修改您的搜索:

Something 
([^‰\r\n]*) 
Something Else 

这应该“捕获”什么是括号内并将其存储在一个变量,$1

然后,尝试这种替换:

Something 
<Tuv Lang="EN-US">$1</Tuv><Tuv Lang="PT-BR"> </Tuv> 
Something Else 

我不能说这是否会工作,我的jEdit与否,因为我没有坚持到底。

+0

非常感谢杰里!!!!! :D:D 它的作品像一个魅力:D – user2809038

+0

@ user2809038太棒了!你能否将我的答案标记为已接受? ^^ – Jerry

0

搜索:

Something(\s*)(.*?)(\s*)Something Else 

替换:

Something$1<Tuv Lang="EN-US">$2</Tuv><Tuv Lang="PT-BR"> </Tuv>$3Something Else 

这抓住了换行符(S)以及包装的文本,并把它全部回到正确的位置,这意味着,无论换行字符都存在保存。

live demo见正则表达式匹配的样品输入的

+0

请注意['?'non-greedy modifier](http://www.regular-expressions.info/repeat.html),这对于两个块位于单个文件中时非常重要。 –

+0

我已经测试过它,但它不起作用。它被替换,但没有文字/文字(你增加2美元)。无论如何,谢谢你们的答案!顺便说一句,我会看看你发送的实时演示页面,它看起来不错! – user2809038

+0

尝试在替换文本中使用'\ 1'而不是'$ 1'等。没有后向引用的标准 - 您的工具可能是反斜杠类型 – Bohemian