用硬编码文本替换组的正则表达式
A regular expression that replaces a group with hard coded text
首先,我不确定这是否是您甚至可以在正则表达式中执行的操作。如果可以,我不知道如何搜索如何做。
假设我有文本:
Click <a href="/follow">this link</a> for more information.
还有一个正则表达式:
<a[^>]*>([^<]*)</a>
正则表达式的应用将为第 1 组产生此结果:
this link
假设我想将正则表达式写入第 1 组 return 硬编码文本
<a[^>]*>(${{replacement text}}[^<]*)</a>
(顺便编造句法)
因此,将正则表达式应用于文本会产生第 1 组的结果:
replacement text
这可能吗?
这是另一个例子来巩固我的 objective:
文本示例:
serverNode1/appPortal
serverNode1/appPortal2
serverNode1/appPortal3
我的正则表达式
appPortal((?:?{{"1"}}\b)|(?:\d))
(使用相同的语法)
第一个字符组的预期输出应该是
1
2
3
(表达式的要点是匹配单词 break 并将其替换为“1”,或者使用数字字符 class 来匹配数字。子组可以通过 ?:
所以外面的组还是组1).
您可能会问这有什么意义?我正在使用 Splunk 进行字段提取,我希望将字段提取为 1、2 或 3,就像我上面的示例一样,我只能依靠正则表达式组来提供我的字段(例如,我没有任何地方可以放置代码来说明如果组 1 ==“”然后更改为“1”)。
基本上按照正则表达式的定义,是不可能的。根据定义,正则表达式匹配文本中的模式。需要明确的是,正则表达式引擎 returns 匹配始终是原始字符串的一部分,仅此而已。有一些正则表达式扩展允许指定捕获组的名称,但它不会转换匹配。
您描述的行为可以很容易地在任何编程语言中处理正则表达式匹配,但也可以通过结合正则表达式替换和解析来实现。
例如,s/appPortal(?!\d)/appPortal1/
会将后面没有数字的 "appPortal" 替换为 "appPortal1",然后您可以应用另一个正则表达式来构建您想要的匹配项。
首先,我不确定这是否是您甚至可以在正则表达式中执行的操作。如果可以,我不知道如何搜索如何做。
假设我有文本:
Click <a href="/follow">this link</a> for more information.
还有一个正则表达式:
<a[^>]*>([^<]*)</a>
正则表达式的应用将为第 1 组产生此结果:
this link
假设我想将正则表达式写入第 1 组 return 硬编码文本
<a[^>]*>(${{replacement text}}[^<]*)</a>
(顺便编造句法)
因此,将正则表达式应用于文本会产生第 1 组的结果:
replacement text
这可能吗?
这是另一个例子来巩固我的 objective:
文本示例:
serverNode1/appPortal
serverNode1/appPortal2
serverNode1/appPortal3
我的正则表达式
appPortal((?:?{{"1"}}\b)|(?:\d))
(使用相同的语法)
第一个字符组的预期输出应该是
1
2
3
(表达式的要点是匹配单词 break 并将其替换为“1”,或者使用数字字符 class 来匹配数字。子组可以通过 ?:
所以外面的组还是组1).
您可能会问这有什么意义?我正在使用 Splunk 进行字段提取,我希望将字段提取为 1、2 或 3,就像我上面的示例一样,我只能依靠正则表达式组来提供我的字段(例如,我没有任何地方可以放置代码来说明如果组 1 ==“”然后更改为“1”)。
基本上按照正则表达式的定义,是不可能的。根据定义,正则表达式匹配文本中的模式。需要明确的是,正则表达式引擎 returns 匹配始终是原始字符串的一部分,仅此而已。有一些正则表达式扩展允许指定捕获组的名称,但它不会转换匹配。
您描述的行为可以很容易地在任何编程语言中处理正则表达式匹配,但也可以通过结合正则表达式替换和解析来实现。
例如,s/appPortal(?!\d)/appPortal1/
会将后面没有数字的 "appPortal" 替换为 "appPortal1",然后您可以应用另一个正则表达式来构建您想要的匹配项。