HTMLコメントタグを含まないgrepNo.24652
わっきー@茨城 さん 08/03/17 17:37
 
お世話になっております、わっきー@ユーザです。

XMLファイルにてコメントを除いてのgrepを実行していたところ、意図しない挙動が
ありました。(秀丸エディタVer.7.07)
複数行コメントは秀丸エディタ標準の「HTML/XML」、折り返しは100行設定です。

手順1:以下のコード(17行)を test.xml で保存。

<!-- F_バッチファイルチェック1 -->
<SQLQuery id="Batch1">
<![CDATA[
SELECT "ファイル番号"
FROM "F_バッチファイル"
WHERE "コマンド" = '{%命令コード%}'
]]>
</SQLQuery>

<!-- F_バッチファイルチェック2 -->
<SQLQuery id="Batch2">
<![CDATA[
SELECT "レコード数"
FROM "F_バッチファイル"
WHERE "コマンド" = '{%命令コード%}'
]]>
</SQLQuery>


手順2:以下の条件で grepを実行。

検索する文字列:F_バッチ[^ ]+
大文字/小文字の区別:ON
単語の検索:ON
正規表現:ON
あいまい検索:OFF
追加の条件:コメントを除く

結果:以下のgrep結果が出力される。

test.xml(5): FROM "F_バッチファイル"
test.xml(9): <!-- F_バッチファイルチェック2 -->
test.xml(13): FROM "F_バッチファイル"

問題点:
1.「コメントを除く」が適用されず10行目の文字列がヒットしてしまっている
2.上記結果の行数は (9) および (13) は本来の位置より1行前になってしまっている


なお、そのままソース内で上候補ボタンで検索を実行すると5行目、14行目のみ強調
されます。
(「コメントを除く」が正しく適用されている)

以上、よろしくお願いいたします。

[ ]
RE:24652 HTMLコメントタグを含まないgrepNo.24654
秀丸担当 さん 08/03/17 18:32
 

>XMLファイルにてコメントを除いてのgrepを実行していたところ、意図しない挙動が
>ありました。(秀丸エディタVer.7.07)
>複数行コメントは秀丸エディタ標準の「HTML/XML」、折り返しは100行設定です。

ご迷惑をおかけして申し訳ありません。
同じようにしてやってみたところ、最初数回は以下のようになりました。

test.xml(5): FROM "F_バッチファイル"
test.xml(13): FROM "F_バッチファイル"

13行目という表示がおかしいようです。
その後、何度かやるうちに以下のように表示されました。

test.xml(5): FROM "F_バッチファイル"
test.xml(14): FROM "F_バッチファイル"

検索とも同じ結果になり、その後何回やっても正しい結果になってしまい、再現
することができなくなってしまいました。
13行目と表示されたのは何が条件だったのか分からなくなってしまいました。
9行目が結果に出ることはありませんでした。

一つ教えていただきたいのですが、ファイルのエンコードは何でしょうか。
あと、grepダイアログで、エンコードの種類を明示的に指定してみるとどうでし
ょうか。

[ ]
RE:24654 HTMLコメントタグを含まないgrepNo.24656
わっきー@茨城 さん 08/03/17 20:03
 
> 検索とも同じ結果になり、その後何回やっても正しい結果になってしまい、再現
> することができなくなってしまいました。
> 13行目と表示されたのは何が条件だったのか分からなくなってしまいました。
> 9行目が結果に出ることはありませんでした。
>
> 一つ教えていただきたいのですが、ファイルのエンコードは何でしょうか。
> あと、grepダイアログで、エンコードの種類を明示的に指定してみるとどうで
> しょうか。

ファイルのエンコード種類は 日本語(Shift-JIS) です。
grepダイアログボックスでエンコード種類を Shift-JIS に指定しても結果は同じで
した。
(grepダイアログの自動判定の設定はデフォルトのままで特にいじっていません)

現象を保持しつつ先述のコードの単純化を試みましたところ、以下のコード(4行)
まで切り分けることができました。
拡張子は *.xml *.htm のどちらでも同じ結果を得ています。

検索条件:(キーワードを含め、先述のものと同一です)
検索する文字列:F_バッチ[^ ]+
大文字/小文字の区別:ON
単語の検索:ON
正規表現:ON
あいまい検索:OFF
追加の条件:コメントを除く


<!-- F_バッチファイルチェック1 -->
<img src="a.jpg" alt="F_バッチファイル">
画像
<!-- F_バッチファイルチェック2 -->

または

<!-- F_バッチファイルチェック1 -->
<a href="a.htm" title="F_バッチファイル">リンク
</a>
<!-- F_バッチファイルチェック2 -->


加えて、↓のコード(3行)では再現できませんでした。(コメントを正しく無視し
ている)

<!-- F_バッチファイルチェック1 -->
<img src="a.jpg" alt="F_バッチファイル">画像
<!-- F_バッチファイルチェック2 -->

または

<!-- F_バッチファイルチェック1 -->
<a href="a.htm" title="F_バッチファイル">リンク</a>
<!-- F_バッチファイルチェック2 -->


何かタグの後ろに続く改行が影響しているようにも見えますが…。

[ ]
RE:24656 HTMLコメントタグを含まないgrepNo.24662
秀丸担当 さん 08/03/18 09:47
 

>現象を保持しつつ先述のコードの単純化を試みましたところ、以下のコード(4行)
>まで切り分けることができました。
>拡張子は *.xml *.htm のどちらでも同じ結果を得ています。

ありがとうございます。
同じように再現させることができました。
すぐ修正させていただきます。

[ ]