如何在 Notepad++ 的 Python 脚本中将变量设置为正则表达式字符串?

Posted

技术标签:

【中文标题】如何在 Notepad++ 的 Python 脚本中将变量设置为正则表达式字符串?【英文标题】:How do I set a variable to a regex string in Python Script for notepad++? 【发布时间】:2015-02-03 18:31:46 【问题描述】:

我正在尝试使用正则表达式将变量 (x) 设置为文本文件中的字符串。

在我正在搜索的文件中存在几行代码,并且总是其中一行是票号 WS########。看起来像这样

~文件~

out.test
WS12345678
something here
pineapple joe
etc.

~代码~

def foundSomething(m):
    console.write('0\n'.format(m.group(0), str(m.span(0))))

editor1.research('([W][S]\d\d\d\d\d\d\d\d)', foundSomething)

通过我的研究,我设法让上述代码正常工作,当文件中存在相应的文本时,它会将 WS12345678 输出到控制台。

如何将 WS12345678 放入变量中,以便可以使用相应的编号保存该文件?

编辑 把它放在伪代码中,我正在尝试

x = find "WS\d\d\d\d\d\d\d\d" 
file.save(x)

解决方案 感谢@Kasra AD 的解决方案。我能够创建一个解决方法。

import re  #import regular expression
test = editor1.getText()  #variable = all the text in an editor window
savefilename = re.search(r"WS\d8",test).group(0) #setting the savefile variable
console.write(savefilename) #checking the variable

要使用 PythonScript 插件在 notepad++ 中的文件中查找特定字符串,您可以将 1 个编辑器中的所有内容提取到字符串中,然后对其运行正则表达式搜索。

【问题讨论】:

为什么当你的文件中有WS12345678时,结果是WS99999999,你的预期结果是什么? 对不起,我使用的是正则表达式,所以名称无关紧要,只要它以“WS”开头并且后面有 8 个数字。 所以你想提取它,想做什么? 【参考方案1】:

您需要在函数中返回结果,然后简单地分配给一个变量:

def foundSomething(m):
    return console.write('0\n'.format(m.group(0), str(m.span(0))))


my_var=foundSomething(input_arg)

还可以使用以下正则表达式提取您想要的字符串:

>>> s="""out.test
... WS12345678
... something here
... pineapple joe"""
>>> import re
>>> re.search(r'WS\d8',s).group(0)
'WS12345678'

【讨论】:

如果 editor.research 是一个函数,它是如何工作的。 (我使用的是notepad++的PythonScript插件) @Mason 抱歉我听不懂?你的意思! 抱歉,我很难用语言表达这个问题。 editor1.research 也是一个必要的函数,因为它使用一种 Scintilla 形式来编辑文本文件并对其进行解析。 my_var = editor1.research('([W][S]\d\d\d\d\d\d\d\d)', foundSomething) 似乎不起作用,即使我在 foundSomething 函数中包含该返回值。 x = find "WS\d\d\d\d\d\d\d\dfile.save(x) @Mason 你的模式不正确,检查编辑 感谢您指出这一点!节省击键。显然,这可以在 notepad++ 中使用名为 Python Script 的插件来实现。我的理解是这个插件使用 Scintilla + Python 让用户可以做任何事情。我需要能够在 notepad++ 中执行此操作才能使该脚本有用。

以上是关于如何在 Notepad++ 的 Python 脚本中将变量设置为正则表达式字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Python 如何写脚本?

获取搜索词的行 - Notepad++ 的 Python 脚本

我想知道如何查看python的源代码

分析Notepad ++的Python正确性(即lint)

notepad++怎么配置java命令

Python脚本在Linux上怎么运行