我正在尝试匹配类似于“12345@5.6;12345@45;12345@0.5”的模式。我正在尝试使用 Oracle(11g) REGEXP_LIKE 函数来做到这一点。这是我的代码-
设置服务器输出;
开始
if regexp_like(TRIM('12345@5.6;12345@45;12345@0.5'),'[^\d+@((\d+.\d{0,4})|(\d+));$]+' )
then
dbms_output.put_line('yes');
else
dbms_output.put_line('No');
end if;
结尾;
对于上面的代码输出是“是”,这就是我想要的。但是对于像“12345@5.6,12345@45;12345@0.5”这样的模式,这段代码也返回“是”(而不是分号,我在“之后指定了逗号” 5.6')。
它基本上是在检查模式,但如果它发现至少一种这种模式,则返回 true,而不是检查剩余的字符串以确保一切都在模式中。
我只想要字符串的整个长度中指定类型的模式。如果某些东西超出模式,我需要返回“否”。
另一个例子:-假设有一个字符串'abc;abc;abc'我想检查模式'abc'是否不仅存在于字符串中,而且还在整个字符串中重复。这意味着代码应该为像'abc;bca;def'这样的字符串返回false,并且应该只为'abc;abc;abc'返回true。
需要明确的是,我只想检查指定的模式是否在整个字符串长度中重复,否则我想返回“否”,不只是看到至少一个存在并返回 true,而且我不知道这种模式存在多少次.
希望我清楚,请帮助。谢谢。