Notepad ++正则表达式在行尾查找/替换

时间:2018-01-04 16:39:55

标签: regex notepad++

我有一个包含数百行的文件,如:

  

[some text] - 1930

这是任意文本,然后是“空间破折号空间”,然后是四位数年份。

问题在于,任意文本有时也包含“空间破折号空间[数字]”。

我想用哈希符号替换最后一个破折号,但不能替换任何其他破折号。

换句话说:

  

lorem ipsum 24:1978 - 1981 - 1922

     

lorem ipsum 61:1954 - 1956年foorbar - 1929

会变成:

  

lorem ipsum 24:1978 - 1981#1922

     

lorem ipsum 61:1954 - 1956 foobar#1929

我搜索过Stackoverflow和WWW,但无法找到解决方案。

我该怎么做?

更新:感谢大家的答案;不要感谢沮丧的选民。

3 个答案:

答案 0 :(得分:1)

  • 控制 + ħ
  • 找到:—( \d+)$
  • 替换为:#$1
  • 检查环绕
  • 检查正则表达式
  • 全部替换

<强>解释

—       : literally  —
( \d+)  : group 1, a space followed by 1 or more digits
$       : end of line

给定示例的结果:

lorem ipsum 24: 1978 — 1981 # 1922
lorem ipsum 61: 1954 — 1956 foobar # 1929

答案 1 :(得分:1)

您可以尝试按props

替换-( \d{4})$

答案 2 :(得分:0)

代码

See regex in use here

—(?= \d{4}$)

替换:#
使用gm标志(全局和多行)

用法

Notepad++ usage

结果

输入

lorem ipsum 24: 1978 — 1981 — 1922
lorem ipsum 61: 1954 — 1956 foorbar — 1929

输出

lorem ipsum 24: 1978 — 1981 # 1922
lorem ipsum 61: 1954 — 1956 foorbar # 1929

说明

  • 按字面意思匹配
  • (?= \d{4}$)肯定前瞻确保后面是一个空格,后跟4个数字,后跟行尾($是行尾断言)