在 PDI KETTLE 中使用正则表达式删除字符串的一部分
Delete portions of a string using regex in PDI KETTLE
我正在尝试使用 PDI KETTLE 中的 "Replace in string" 步骤清理字符串。
输入字符串如下所示:
<p class="MsoNormal" style="FONT-SIZE: 11pt; mso-ansi-language: ES"> AAA <p></p></span></p> <p class="MsoNormal" style="FONT-SIZE: 11pt; mso-ansi-language: ES"> BBB <personname w:st="on"> CCC.
所需的输出是删除每个“<”和“>”字符之间的字符串部分,以获得:
AAA BBB CCC.
寻找类似的问题,我试过这个Replace string using regular expression in KETTLE
在 "Replace in string" 步骤中,我使用 RegEx,搜索 (<(.*)>) 并且没有要替换的内容。
但问题是它删除了第一个“<”和最后一个“>”字符之间的所有内容,输出为:
CCC.
我应该如何构建 RegEx 表达式?
问题是您的 (.*)
太贪心了,因此它会捕捉到最后 >
之前的所有内容。
要使其变得懒惰,您可以:
- 使用
(<(.*?)>)
让你的量词变得懒惰
- 明确设置要捕获的字符class,
(<([^>]*)>)
两者都应该工作并作为输出产生
AAA BBB CCC.
我正在尝试使用 PDI KETTLE 中的 "Replace in string" 步骤清理字符串。
输入字符串如下所示:
<p class="MsoNormal" style="FONT-SIZE: 11pt; mso-ansi-language: ES"> AAA <p></p></span></p> <p class="MsoNormal" style="FONT-SIZE: 11pt; mso-ansi-language: ES"> BBB <personname w:st="on"> CCC.
所需的输出是删除每个“<”和“>”字符之间的字符串部分,以获得:
AAA BBB CCC.
寻找类似的问题,我试过这个Replace string using regular expression in KETTLE
在 "Replace in string" 步骤中,我使用 RegEx,搜索 (<(.*)>) 并且没有要替换的内容。
但问题是它删除了第一个“<”和最后一个“>”字符之间的所有内容,输出为:
CCC.
我应该如何构建 RegEx 表达式?
问题是您的 (.*)
太贪心了,因此它会捕捉到最后 >
之前的所有内容。
要使其变得懒惰,您可以:
- 使用
(<(.*?)>)
让你的量词变得懒惰
- 明确设置要捕获的字符class,
(<([^>]*)>)
两者都应该工作并作为输出产生
AAA BBB CCC.