正規表現 Part6
■ このスレッドは過去ログ倉庫に格納されています
0749デフォルトの名無しさん
2010/01/28(木) 13:40:43●説明
大量の文字データの中から「新宿」という文字列をMATCHさせたい。
ただし、「西新宿」「新宿駅」「東京都新宿区」「西武新宿線」を含む文字列はMATCHさせない。
●テストケース(文字列)と期待する結果(MATCHするかしないか)
新宿 MATCHする
湘南新宿 MATCHする
新宿御苑 MATCHする
東京都新宿 MATCHする
新宿区 MATCHする
西武新宿 MATCHする
新宿線 MATCHする
西新宿 MATCHしない
新宿駅 MATCHしない
西新宿駅 MATCHしない
東京都新宿区 MATCHしない
西武新宿線 MATCHしない
●試した正規表現
(?<!西)((?<!東京都)((?<!西武)新宿|新宿(?!線))|((?<!西武)新宿|新宿(?!線))(?!区))(?!駅)
●質問内容
上記の正規表現で、期待する結果は得られたのですが、どうも長ったらしく、スッキリしません。
もし、「東京都新宿区」や「西武新宿線」のように、真ん中に対象文字列ありで除外したい文字列がどんどん増えていったとしたら非常に面倒な気がします。
もっとコンパクトに短く効率的に書けたりするなど、いい案はございますでしょうか?アドバイスをいただけると幸いでございます。
●補足
「事前にif文などで、MATCHさせたくないワードを除外する」ということは諸事情によりできません。
たった一つの正規表現で表すことが絶対条件です。
■ このスレッドは過去ログ倉庫に格納されています