正则表达式不匹配来自文本(仅字母)但来自字母数字文本的句点(。)
Regular Expression to not to match period (.) from text(only alpha) but from alphanumeric text
SELECT regexp_replace('FRAME WINDOW MASTER. 160.055-44.9 ADULT Z68.41', '[^A-Z0-9%+/.+ '']', ' ')
FROM DUAL;
我得到的结果是
FRAME WINDOW MASTER. 160.055 44.9 ADULT
但我希望结果是
FRAME WINDOW MASTER 160.055 44.9 ADULT
(大师无句号)
这样做有用吗?
"[^A-Z0-9%+/.+ '']|\.\s"
我不确定你到底想要什么,但它提供了你想要的输出。
编辑这是解决方法:
[^A-Z0-9%+/.+ '']|\.(\s|$)
您可以在字符后匹配 .
并像这样替换组。
正则表达式: (\D)\.
并替换为 [space]
您可以在两个字符之间匹配 .
并像这样替换组。
正则表达式: (\D)\.(\D)
并替换为 [space]
您也可以像这样使用 look around
断言。 对其在 Oracle 中的支持持怀疑态度。
正则表达式: (?<=\D)\.(?=\D)
并替换为 [space]
SELECT regexp_replace('FRAME WINDOW MASTER. 160.055-44.9 ADULT Z68.41', '[^A-Z0-9%+/.+ '']', ' ')
FROM DUAL;
我得到的结果是
FRAME WINDOW MASTER. 160.055 44.9 ADULT
但我希望结果是
FRAME WINDOW MASTER 160.055 44.9 ADULT
(大师无句号)
这样做有用吗?
"[^A-Z0-9%+/.+ '']|\.\s"
我不确定你到底想要什么,但它提供了你想要的输出。
编辑这是解决方法:
[^A-Z0-9%+/.+ '']|\.(\s|$)
您可以在字符后匹配 .
并像这样替换组。
正则表达式: (\D)\.
并替换为 [space]
您可以在两个字符之间匹配 .
并像这样替换组。
正则表达式: (\D)\.(\D)
并替换为 [space]
您也可以像这样使用 look around
断言。 对其在 Oracle 中的支持持怀疑态度。
正则表达式: (?<=\D)\.(?=\D)
并替换为 [space]