在记事本中查找和替换^和〜之间的文本


22

我有一个很大的文本文件,我想删除^符号和〜符号之间的所有文本。这也需要跨线工作。

我尝试^*~在“查找”框中执行常规的“查找和替换”,在“替换”框中未进行任何操作,但发现0个结果。

Answers:


24

常规的Find and Replace是不可能的。如果使用Notepad ++ 6,则可以利用支持PCREsource)的新正则表达式引擎。

Ctrl+ H打开“ 查找和替换”对话框,然后执行以下操作:

Find what:          \^.*?~
Replace with:       
Wrap around:        checked
Regular expression: selected
. matches newline:  checked

现在按Alt+ A替换所有出现的情况。

查找内容中的正则表达式组成如下:

  • \^是文字^
  • .*? 是允许正则表达式匹配的最少字符数。
  • ~是文字

3
如果将。*?〜更改为[^〜] *〜,则无需/使用PCRE即可运行。
barlop

1
@barlop:我将常规的“查找和替换”作为搜索模式:“正常”,而不是使用正则表达式进行“ 查找和替换”。那可能是一个误会。无论如何,如果我没记错的话,低于6的版本不支持多行模式。
丹尼斯

.*?模式对我有用,可以在;和的字符之间进行搜索<。所以,搜索的是找到;.*?<更换;与选择的选项Regular expression. matches new line
SherlockSpreadsheets

8

您将要搜索\^.*?~并确定。匹配换行符已启用:

在此处输入图片说明

这是因为^具有特殊含义,它匹配行的开头。因此,我们需要使用反斜杠将其转义\^

写作^*将匹配“连续多少行开始”。.*匹配“任何字符”,但默认情况下不匹配换行符。


2
请注意正则表达式的贪婪行为。如果有多个~字符(或多个匹配项),则将第一个匹配^到最后一个~
重载了

@heavyd <question>确定吗?</ question>。他曾经*?说过,这不是贪婪,懒惰 .*?~永远不会匹配一个以上~。这样就可以了
barlop

@barlop:我回答后不久,他发表了评论。这是忍者编辑。
Der Hochstapler

2

尝试在find部分中使用此正则表达式\^[^~]*~ 替换^和〜之间的所有内容。


而对于排他性的,那么我想这需要PCRE,然后做一些事情(?<= ^)[^〜] *(?=〜)我没有n ++对其进行测试,但是如果失败,请尝试更改(?<= ^ )到(?<= \ ^)
barlop

对于,只需替换为即可^~
丹尼斯

@Dennis我的意思是,如果他想替换^和〜之间的所有内容,但不包括^和
〜– barlop,

1
如果用替换\^[^~]*~,这不是您得到的^~吗?
丹尼斯

@丹尼斯哦,我明白你的意思了。
barlop

0

我对开始和结束字符有类似的BETWEEN替换要求。这来自Outlook电子邮件;在成员的轰动之下,我只想删除与<RemoveTextHere之间的所有内容有关的人名>

原版的

First1 Last1 <First1.Last1@email.com>; First2 Last2 <First2.Last2@email.com>; First3 Last3 <First3.Last3@email.com>; First4 Last4 <First4.Last4@email.com>;

丹尼斯(Dennis)接近我的解决方案,Find what: \^.*?~但是我必须改变我的文字字符,Find what: \<.*?>然后我必须删除第一个斜线Find what: <.*?>

更新 Find what: <.*?> ; 更换为空。

First1 Last1 ; First2 Last2 ; First3 Last3 ; First4 Last4

_

特殊字符*$\+^()[]{}

特殊字符由Jerry Jeremiah在这里/programming/37742519/notepad-wildcard描述。


那没有回答问题。
Toto
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.