提问人:throwaway123 提问时间:11/6/2023 最后编辑:Totothrowaway123 更新时间:11/6/2023 访问量:49
如何在每行不同但具有相同分隔符的情况下删除前后文本 Notepad++
how to remove before and after text in a case where each line is different but has the same separators notepad++
问:
我想尝试删除分隔符前后的文本,但中间的文本并不完全相同。
123:[email protected]:hello
hello:[email protected]:891
以及我想要的结果。
:[email protected]:
:[email protected]:
我试图在这里找到一个查找和替换字符串,但我找不到一个满足我需求的字符串。找到并尝试使用不同的格式,我尝试编辑、查找和替换字符串,但都无法满足我的需要。
答:
0赞
Keyboard Corporation
11/6/2023
#1
将“查找和替换”功能与正则表达式模式结合使用。
在您的例子中,分隔符是冒号 (:),您希望将文本保留在冒号之间并删除其余部分。
方向:
- 打开“查找和替换”对话框 (Ctrl + H)。
- 在“查找内容”字段中,输入以下正则表达式:。此表达式将匹配冒号前后的任何文本。
(.*:)(.*)(:.*)
- 在“替换为”字段中,输入 。这会将匹配的文本替换为第二组(冒号之间的文本)。
\2
- 确保选择“正则表达式”作为搜索模式。
- 单击“全部替换”以应用更改。
预期输出:
:[email protected]:
:[email protected]:
评论
1赞
The fourth bird
11/7/2023
您在这里不需要 3 个捕获组,只需中间的捕获组就足够了,然后替换为并注意 OP 希望保留周围的 在此处查看您当前的输出 regex101.com/r/3MfszS/1$1
:
1赞
Toto
11/6/2023
#2
- Ctrl+H
- 查找内容:
^.*?(:.+?:).*$
- 替换为:
$1
- TICK 环绕
- SELECT 正则表达式
- 取消勾选
. matches newline
- Replace all
解释:
^ # beginning of line
.*? # 0 or more any character but newline, not greedy
( # group 1
: # colon
.+? # 1 or more any character but newline, not greedy
: # colon
) # end group 1
.* # 0 or more any character but newline
$ # end of line
更换:
$1 # content of group 1
截图(前):
截图(后):
评论
1赞
The fourth bird
11/7/2023
如果只是关于冒号,这可能是另一种选择^[^\n:]*(:[^\n:]+:).*$
1赞
Toto
11/7/2023
@Thefourthbird:你是对的,但打字时间更长;-)
评论