2012-01-18 18 views
2

こんにちは、文字列内の一重引用符に一致させようとしています。存在する場合は、WRITEを使用してこれを表示します。正規表現でのシングルクォートABAP

data text type string value `this is a string containing a ' single quote`. 
    find regex `(\'|%27)` in text. 
    if sy-subrc = 0. 
    write 'found'. 
    endif. 

問題点は、私はABAP正規表現のバッククォート文字の動作を理解できないということです。そして、それがどのように機能するかについての説明とともにオンラインでリソースを見つけることはできません。マッチの上にあるTEXT文字列が機能するか失敗するかによって、それを使用した結果はかなり奇妙です。あなたは文字列内の文字列変数のための検索のようなものを行うことができますPerlで

、例えば/:

my $tofind = "'"; //a single quote 
my $text = "this is a string containing a ' single quote"; 
if($text=~m/$tofind/){ 
print "found"; 
} 

この方法は、ABAPで使用することができ、または誰かがABAPでバッククォートを使用する方法を説明することができます。あなたの専門知識のために事前に感謝!

+0

正規表現の '\\'を取るとどうなりますか?私はより一貫した結果を得ました。 – BenV

答えて

4

あなたはしかし、私はあなたが探していると思うものをエスケープ文字は「という文字列/正規表現

data text type string value `this is a string containing a '' single quote`. 
    find regex `(''|%27)` in text. 
    if sy-subrc = 0. 
    write 'found'. 
    endif. 

の一部が余分に注意された」ことを示すことである、この場合にはバッククォートは必要ありません。定義された文字列と正規表現の両方で。

編集:ドキュメントに関するご意見に応じて、正規表現にカーソルを置いてF1(ヘルプ)を実行すると、正規表現のSAPヘルプにアクセスできるはずです。ほとんどの構文が文書化されているように見えました。 (代わりに、単にF1キーを押して正規表現を検索する)。

1

の補足として、単一の文字を見つける簡単な方法があります。

SEARCH text FOR ''''. 
if sy-subrc eq 0. 
    WRITE: 'Position:' , SY-FDPOS. 
endif.