正则表达式 [REGEX] - 替换/替换 - 捕获组 1 和 2 中的内容
Regular expression [REGEX] - substitution / replace - Contents in capture group 1 & 2
可以使用正则表达式之类的东西生成以下任务吗?
想法是将方法名称的一些字母复制到方法代码中。在我提出的示例中,我想将“_”之间的字母从外部方法复制到内部方法中。
有了这个输入,我想得到这个输出:
输入
int mat::CClassA::GetRele_11K11_C_A2_ST() const
{
bool aux1 = this->GetXXX__YY();
}
int namsp::CClassA::GetRele_45K32_C_B3_ST() const
{
bool aux1 = this->GetXXX__YY();
}
输出
int mat::CClassA::GetRele_11K11_C_A2_ST() const
{
bool aux1 = this->GetXXX_11K11_YY();
}
int namsp::CClassA::GetRele_45K32_C_B3_ST() const
{
bool aux1 = this->GetXXX_45K32_YY();
}
我发现了两种不同的方法,但使用的是相同的概念:
- 选项 1
对于简单替换,我们可以使用任何文本编辑器(例如Visual Studio Code、Sublime Text 3、VS2017 代码编辑器...)。
REGULAR EXPRESSION ~ FIND in any text editor
_(\d\d\w\d\d)_C_(\w\d)_ST\(\) const\n\{\n\tbool aux1 = this->GetXXX__YY\(\);
SUBSTITUTION ~ REPLACE in any text editor
__C__ST\(\) const\n\{\n\tbool aux1 = this->GetXXX__YY\(\);
- 选项 2
第二个选项是使用以下语言创建具有更复杂结构的脚本:Python、PHP、C#、Java ...
const regex = /_(\d\d\w\d\d)_C_(\w\d)_ST\(\) const\n\{\n\tbool aux1 = this->GetXXX__YY\(\);/gm;
const str = `int mat::CClassA::GetRele_11K11_C_A2_ST() const
{
bool aux1 = this->GetXXX__YY();
}
int namsp::CClassA::GetRele_45K32_C_B3_ST() const
{
bool aux1 = this->GetXXX__YY();
}`;
const subst = `__C__ST() const\n\{\n\tbool aux1 = this->GetXXX__YY();`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
提示: 您可以使用一些非常有用的工具,例如 https://regex101.com/r/aAvhEF/1还可以为您可能需要的每种编程语言自动生成代码结构。在这里,我在 JavaScript 中发布了一个示例。在此网页中,您还可以了解如何使用 "Quick Reference" 框生成更复杂的 REGEX 表达式。希望对您有所帮助。
可以使用正则表达式之类的东西生成以下任务吗?
想法是将方法名称的一些字母复制到方法代码中。在我提出的示例中,我想将“_”之间的字母从外部方法复制到内部方法中。
有了这个输入,我想得到这个输出:
输入
int mat::CClassA::GetRele_11K11_C_A2_ST() const
{
bool aux1 = this->GetXXX__YY();
}
int namsp::CClassA::GetRele_45K32_C_B3_ST() const
{
bool aux1 = this->GetXXX__YY();
}
输出
int mat::CClassA::GetRele_11K11_C_A2_ST() const
{
bool aux1 = this->GetXXX_11K11_YY();
}
int namsp::CClassA::GetRele_45K32_C_B3_ST() const
{
bool aux1 = this->GetXXX_45K32_YY();
}
我发现了两种不同的方法,但使用的是相同的概念:
- 选项 1
对于简单替换,我们可以使用任何文本编辑器(例如Visual Studio Code、Sublime Text 3、VS2017 代码编辑器...)。
REGULAR EXPRESSION ~ FIND in any text editor
_(\d\d\w\d\d)_C_(\w\d)_ST\(\) const\n\{\n\tbool aux1 = this->GetXXX__YY\(\);
SUBSTITUTION ~ REPLACE in any text editor
__C__ST\(\) const\n\{\n\tbool aux1 = this->GetXXX__YY\(\);
- 选项 2
第二个选项是使用以下语言创建具有更复杂结构的脚本:Python、PHP、C#、Java ...
const regex = /_(\d\d\w\d\d)_C_(\w\d)_ST\(\) const\n\{\n\tbool aux1 = this->GetXXX__YY\(\);/gm;
const str = `int mat::CClassA::GetRele_11K11_C_A2_ST() const
{
bool aux1 = this->GetXXX__YY();
}
int namsp::CClassA::GetRele_45K32_C_B3_ST() const
{
bool aux1 = this->GetXXX__YY();
}`;
const subst = `__C__ST() const\n\{\n\tbool aux1 = this->GetXXX__YY();`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
提示: 您可以使用一些非常有用的工具,例如 https://regex101.com/r/aAvhEF/1还可以为您可能需要的每种编程语言自动生成代码结构。在这里,我在 JavaScript 中发布了一个示例。在此网页中,您还可以了解如何使用 "Quick Reference" 框生成更复杂的 REGEX 表达式。希望对您有所帮助。