2016-07-22 150 views
-1

欢迎家伙,我只是这个社区的新手!只选择特定单词的正则表达式

这里的情况,我有一些字符串这样的

thatisanappleaaa

thatisanappleaaa坏

thatisanappleaaa.bad

thatisanapplebadaaa

thatisanbadappleaaa

thatisanbadbadappleaaa

badthatisanappleaaa

,并试图用崇高的文本3查找和替换功能,以实现以下(注意,只有第一行被替换)

thatisanorangeaaa

thatisanappleaaa bad

thatisanappleaaa.bad

thatisanapplebadaaa

thatisanbadappleaaa

thatisanbadbadappleaaa

badthatisanappleaaaa

是否有过滤器在 “thatisanappleaaa”, “苹果” 只有(这是一条线)一个正则表达式在字符串中任何位置(“苹果”之间除外)中都不存在“坏”字符,因为字符串“bad”不会改变它的出现时间?

+0

我不知道这可以用崇高的文本做...看来,崇高的文本不支持可变长度负lookbehinds,所以你不能做'(?<!坏。*)苹果(?!。*坏)'。 – smarx

+0

我已经和@smarx得出同样的结论。 – Tyler

+0

感谢各位帮忙,@ smarx的正则表达式在多个测试网站上做得很完美。猜猜我必须在其他文本编辑 –

回答

0

尝试

(\ w +),苹果(\ w +)*

将选择围绕苹果

包裹,如果你想选择苹果使用

苹果后的文本结尾的所有文本(\ w +)。*

+0

找到我的好苹果感谢您的回应!它选择所有的行,但情况是只选择字符串“苹果”没有“坏”周围 –

0

在阅读您的描述后,我假设您只想在没有任何事件的句子中替换单词apple单词bad的ces。

我已经使用了一个正则表达式,它使用了负向视图,并使用圆括号来捕获apple,然后可以用任何单词替换它,在您的情况下为orange

正则表达式:^(?!.*bad).*(apple)

DEMO

+0

感谢您的回应!建议的正则表达式能够选择“第一行”,但我只需要选择字符串“苹果”。 –

+0

@ m.x9082如果您注意到我在“匹配信息”部分中提供的演示侧面,则只有'apple'与圆括号匹配。根据您使用的语言,您可以用您选择的任何单词替换此匹配的括号。 –

+0

谢谢!现在我注意到你的正则表达式在web中工作,但是当我将它插入Sublime Text 3时,它从字符串的开头选择到“apple”(即“thatisanapple”)的末尾,并且当我用橙色替换它时,整行字符串变成“orangeaaa”。 –