正则表达式不匹配来自文本(仅字母)但来自字母数字文本的句点(。)

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]

Regex101 Demo


您可以在两个字符之间匹配 . 并像这样替换组。

正则表达式: (\D)\.(\D) 并替换为 [space]

Regex101 Demo


您也可以像这样使用 look around 断言。 对其在 Oracle 中的支持持怀疑态度。

正则表达式: (?<=\D)\.(?=\D) 并替换为 [space]

Regex101 Demo