句子: WOMACK ARMY HOSPITAL null 2817~Reilly ft Rd~28310
预期: WOMACK ARMY HOSPITAL null 2817~Reilly~28310
单词组由制表符分隔。
我需要删除包含2个字母或更少字母的波形符号(〜)之间的每个字。
我现在的正则表达式找不到它。
找到什么:〜[^] {1,2}〜
替换为:没有
这需要多线工作。
答案 0 :(得分:1)
您可以使用
(?:\G(?!^)|~)[^~\n]*?\K[^\n\w]*\b\w{1,2}\b(?=[^~\n]*~)
替换为空字符串。请参阅regex demo online。
请注意,我将\n
添加到了否定的字符类中,以确保只在行内匹配(不会从一行溢出到另一行)。
<强>详情
(?:\G(?!^)|~)
- 上一场比赛的结束或代字号[^~\n]*?
- 除了代字号和换行符之外的0 +字符,尽可能少\K
- 省略目前为止匹配的文字[^\n\w]*
- 除了word和换行符之外的0个字符,尽可能多\b\w{1,2}\b
- 1个或2个字符(将\w
替换为\pL
仅匹配字母)(?=[^~\n]*~)
- 除了代字号和换行符之外的0 +字符之后必须有一个代字号(以确保我们在同一行上有一个结束~
)。Notepad ++设置: