検索作業を TSkRegExp 一本にまとめるため正規表現を選ばない場合
TRegEx.Escape() で検索単語をエスケープして試してみたのですが
「単語単位での検索」だけがネックになって共通化出来ませんでした
何かよい方法はありませんでしょうか?
以上、よろしくお願いいたしますm(_ _)m
> 「単語単位での検索」だけがネックになって共通化出来ませんでした
エスケープした文字列の前後を '\b' で括ってみるとか?
文字クラス ([]) の外の \b は "単語の境界にマッチ" を意味します。
Ex.
S := 'Hello';
Exp := '\b' + TRegEx.Escape(S) + '\b';
ありがとうございます!
ほとんど諦めて再度処理を分岐しようかと思っていたところです
一応書いてみますが……
「Nana形式」に単語「Nana」がヒットしないのは仕方ないですね
> 一応書いてみますが……
> 「Nana形式」に単語「Nana」がヒットしないのは仕方ないですね
そうですね。
...ですが DefinedCharClassLegacy をオプションに含める事で
英数字のみの単語による検索が可能になります。
"エスケープする文字列" に英数字以外が含まれないのであれば、
DefinedCharClassLegacy をオプションに含めるようにしてみてはいかがでしょうか?
> "エスケープする文字列" に英数字以外が含まれない
"アンダーバーと英数字" の誤りです。
SkRegExp で DefinedCharClassLegacy を有効にした時に
単語を構成する文字として扱われるのは以下の通りです。
[_A-Za-z0-9]
'\', '[', ']', '^', '$', '.', '|', '?', '*', '+', '(', ')', '{', '}'
が含まれないということですね
前提が単語検索ですので問題ないと思います
本当にありがとうございました
ツイート | ![]() |