View Issue Details
Category | |||||
---|---|---|---|---|---|
整備班:YAYA | |||||
Severity | minor | Reproducibility | always | ||
Status | closed | ||||
Summary | 0000056: 正規表現での\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は最新の紺野あやめのものです。 | ||||
Tags | No tags attached. | ||||
Attach Tags | |||||
|
バックスラッシュをタグとして使ってしまっている伺か特有の問題の対策のため、AYAは文字列定数のバックスラッシュをエスケープとして扱っていません。 ゆえに、 RE_REPLACE("あ\nや\tめ",'\n',"") の第1引数の\nや\tは、改行やタブではなく\n\tという文字列そのものとして解釈されています。 一方、第2引数は一般的な正規表現として解釈されるため、\nは「改行文字にマッチ」となり、結果第1引数には改行文字が含まれないので置換が発生しません。 このあたりから辿って挙動を追ってみてはどうでしょうか。 |
|
state change to feedback |
|
なるほど、AYAの文字列での\nはもともと改行コード扱いされていないのですね。 すっきりしました。 異常などと書いてしまい恥ずかしいです。 丁寧に説明くださりありがとうございました。 |
|
state change : 修正不要 |
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 |