我正面临以下问题。 由于缺乏环视,需要将正则表达式拆分为多个部分。 所以我想匹配和至少7个字符长的单词,包括大写字母,_和数字。
A _ AAAABBC
这将匹配两者
MYVAR:=' AAAA_BB8
'和myvar:=' A
'。我希望它只匹配第二个(具有所有3个条件),因为第一个匹配3个不同的字符串:_
AAAABBC
和my $tz = DateTime::TimeZone->new(name => 'America/San_Francisco');
。另外,我需要匹配的精确词。
答案 0 :(得分:0)
您想要完全匹配第三个模式。所以你想使用^[A-Z0-9_]{7,}$
代替
set serveroutput on
declare
pat1 constant varchar2(20) := '[A-Z]';
pat2 constant varchar2(20) := '[_]';
pat3 constant varchar2(20) := '^[A-Z0-9_]{7,}$';
myvar varchar2(1000);
begin
myvar := 'A _ AAAABBC';
IF regexp_like(myvar,pat1)
AND regexp_like(myvar,pat2)
AND regexp_like(myvar,pat3) THEN
DBMS_OUTPUT.PUT_LINE(myvar); -- Doesn't match
END IF;
myvar := 'AAAA_BB8';
IF regexp_like(myvar,pat1)
AND regexp_like(myvar,pat2)
AND regexp_like(myvar,pat3) THEN
DBMS_OUTPUT.PUT_LINE(myvar); -- Matches
END IF;
END;
答案 1 :(得分:0)
希望这有帮助
declare
myvar varchar2(100) :='AAAA_A8';
begin
if regexp_like(myvar,'[A-Z]_[A-Z][0-9]')
then
dbms_output.put_line('MATCH'||myvar); end if;
END;
代码有助于识别字母,如字母后跟_然后是字母后跟数字。希望它符合您的要求。代码匹配AAAA_A8和AAAA_8。