英文:
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的差异。
尝试使用以下表达式,但它只找到所有具有在之前和之后都有<
和>
的特殊字符的单词。
<(.+?)>
英文:
Using notepad++
, trying to find number after word with special characters and then subtract constant number from the value for all such occurrence.
Input:
<title>100
<title>99
<title>98
<title>97
Expected output after regex
, using find and replace:
<title>78
<title>77
<title>76
<title>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 <
and >
before and after.
<(.+?)>
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'<title>\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'<title>\K(\d+)', substract)
- Open the file you want to modify
- Run the script (Plugins >> PythonScript >> Scripts >> substract)
- Done
答案2
得分: 1
如果使用另一个文本编辑器 -EmEditor,可以通过J模式在搜索和替换功能中执行算术操作。
查找:(?<=\<title>)\d+
替换:\J \0-22
(?<=\<title>)\d+ 使用了环视模式,意味着查找<title>后面的数字。
\J \0-22 使用了J模式,\0 是找到的数字的反向引用。\0-22的结果就是我们想要的。当然,我们可以通过+ - * / 和其他方式进行计算。
英文:
If using another text editor -EmEditor , it's easy to do Arithmetic operation in search & replace function by J mode.
Find: (?<=\<title>)\d+
Replace :\J \0-22
(?<=\<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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论