正規表現で特定の文字列を抜き出したいのですが、 <ef>
や <bc>
といった特殊文字が末尾についてしまいます。
環境
- Unix
- Unicode
- Perl
- vim
正規表現で以下の文字列に対して特定の文字列を抜き出したいです。
1. ほげほげ(11-111) - ほげほげ => ほげほげ(11-111) 2. ほげほげ(11-111) - ほげほげ => ほげほげ(11-111)
1.は(が半角2.は(が全角です。
1.の場合は問題無いですが、2の場合は問題が発生します。
lang
1$text = 'ほげほげ(11-111) - ほげほげ'; 2 3if ( $text =~ /.*[\((]\d+-\d+[\))]/ ) { 4 print $&; 5} 6 7# 出力結果 8ほげほげ(11-111<ef> 9 10# ]の後ろに.を追加 11if ( $text =~ /.*[\((]\d+-\d+[\))]./ ) { 12 print $&; 13} 14 15# 出力結果 16ほげほげ(11-111<ef><bc> 17 18# ]の後ろに..を追加 19if ( $text =~ /.*[\((]\d+-\d+[\))]../ ) { 20 print $&; 21} 22 23# 出力結果 24ほげほげ(11-111)
[]
で(が半角と(が全角に対応していますが、 []
を外すと期待通りの結果になります。
lang
1if ( $text =~ /.*(\d+-\d+)/ ) { 2 print $&; 3} 4 5# 出力結果 6ほげほげ(11-111)
ググったのですが、 <ef>
や <bc>
が何者であるのかよく分からずまた回避方法ご存知のかたいらっしゃいますか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/05/13 05:13