View Issue Details

Category
整備班:YAYA
SeverityminorReproducibilityalways 
Status closed 
Summary0000056: 正規表現での\n、\tの認識がおかしい
Description

RE_REPLACEや、RE_GREPなどの正規表現系関数で、'\n'や、'\t'が正常に認識されません。
例えば、
RE_REPLACE("あ\nや\tめ",'\n',"")
の出力は、"あ\nや\tめ"のままです。
RE_REPLACE("あ\nや\tめ",'\t',"")も同様に置換が起きません。

代わりに、正規表現で'\n'、'\t'を'\n'、'\t'と書くと読み取ってくれるようです。

例えば、
RE_REPLACE("\あ\nや\tめ",'[\n\t]',"")
の出力は、"あやtめ"、
RE_REPLACE("\あ\nや\tめ",'(\n|\t)',"")
の出力は、"あや\tめ"
となりました。

この\n、\tの異常の結果として、'\s'も正常に感知されず、' '(半角スペース)だけ認識してくれるが、\n、\tなどは認識しないようでした。

仕様なのかもしれませんが自分の考える正規表現とは違う挙動なので報告させていただきました。

環境はWindows10、SSPです。
YAYAは最新の紺野あやめのものです。

Activities

ponapalt

2020-02-29 17:05

administrator   ~0000098

バックスラッシュをタグとして使ってしまっている伺か特有の問題の対策のため、AYAは文字列定数のバックスラッシュをエスケープとして扱っていません。
ゆえに、
RE_REPLACE("あ\nや\tめ",'\n',"")
の第1引数の\nや\tは、改行やタブではなく\n\tという文字列そのものとして解釈されています。

一方、第2引数は一般的な正規表現として解釈されるため、\nは「改行文字にマッチ」となり、結果第1引数には改行文字が含まれないので置換が発生しません。

このあたりから辿って挙動を追ってみてはどうでしょうか。

ponapalt

2020-02-29 17:06

administrator   ~0000099

state change to feedback

guest

2020-03-01 17:22

reporter   ~0000100

なるほど、AYAの文字列での\nはもともと改行コード扱いされていないのですね。
すっきりしました。
異常などと書いてしまい恥ずかしいです。
丁寧に説明くださりありがとうございました。

ponapalt

2020-03-01 18:30

administrator   ~0000101

state change : 修正不要

Issue History

Date Modified Username Field Change
2020-02-28 22:58 guest New Issue
2020-02-29 17:05 ponapalt Note Added: 0000098
2020-02-29 17:06 ponapalt Assigned To => ponapalt
2020-02-29 17:06 ponapalt Status new => feedback
2020-02-29 17:06 ponapalt Note Added: 0000099
2020-03-01 17:22 guest Note Added: 0000100
2020-03-01 17:22 guest Status feedback => assigned
2020-03-01 18:30 ponapalt Status assigned => closed
2020-03-01 18:30 ponapalt Resolution open => no change required
2020-03-01 18:30 ponapalt Note Added: 0000101