正则表达式以查找带有特殊字符的单词后面的数字并减去常数值

huangapple go评论51阅读模式
英文:

Regular Expression to find number after word with special characters and subtract constant value

问题

使用notepad++,尝试查找特殊字符后的数字,并从所有这些出现中减去一个常数。

输入:

<title>100
<title>99
<title>98
<title>97

期望的输出在使用正则表达式、查找和替换之后如下:

<title>78
<title>77
<title>76
<title>75

输入数字和输出之间始终有22的差异。

尝试使用以下表达式,但它只找到所有具有在之前和之后都有<>的特殊字符的单词。

&lt;(.+?)&gt;
英文:

Using notepad++, trying to find number after word with special characters and then subtract constant number from the value for all such occurrence.

Input:

&lt;title&gt;100
&lt;title&gt;99
&lt;title&gt;98
&lt;title&gt;97

Expected output after regex, using find and replace:

&lt;title&gt;78
&lt;title&gt;77
&lt;title&gt;76
&lt;title&gt;75

There is always a difference of 22 between input number and the output.

Tried using below expression, but it only finds all the word with special characters that has &lt; and &gt; before and after.

&lt;(.+?)&gt;

Any suggestions will be helpful.

答案1

得分: 2

你可以在 PythonScript 插件中运行 Python 脚本。

如果尚未安装该插件,请按照此指南进行安装。

  • 创建一个脚本 (插件 >> PythonScript >> 新建脚本)
  • 复制以下代码并保存文件(例如 substract.py):
import re

def substract(match):
    val = int(match.group(1)) - 22
    return str(val)
    
editor.rereplace(r'&lt;title&gt;\K(\d+)', substract)
  • 打开您想要修改的文件
  • 运行脚本 (插件 >> PythonScript >> 脚本 >> substract)
  • 完成
英文:

You can run a python script within the PythonScript plugin.

If it is not yet installed, follow this guide

  • Create a script (Plugins >> PythonScript >> New Script)
  • Copy this code and save the file (for example substract.py):
import re

def substract(match):
    val = int(match.group(1)) - 22
    return str(val)
    
editor.rereplace(r&#39;&lt;title&gt;\K(\d+)&#39;, substract)
  • Open the file you want to modify
  • Run the script (Plugins >> PythonScript >> Scripts >> substract)
  • Done

答案2

得分: 1

如果使用另一个文本编辑器 -EmEditor,可以通过J模式在搜索和替换功能中执行算术操作。

查找:(?<=\&lt;title>)\d+

替换:\J \0-22

(?<=\&lt;title>)\d+ 使用了环视模式,意味着查找<title>后面的数字。

\J \0-22 使用了J模式,\0 是找到的数字的反向引用。\0-22的结果就是我们想要的。当然,我们可以通过+ - * / 和其他方式进行计算。

enter image description here

英文:

If using another text editor -EmEditor , it's easy to do Arithmetic operation in search & replace function by J mode.

Find: (?<=\&lt;title>)\d+

Replace :\J \0-22

(?<=\&lt;title>)\d+ use look -around pattern, which means find the numbers after <title>.

\J \0-22 use J mode by \J , \0 is back reference for found numbers. The result of \0-22 is we wanted . Certainly , we can calculate by + - * / and others.

enter image description here

huangapple
  • 本文由 发表于 2023年6月22日 11:19:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/76528399.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定