re.search を使って文字列中に、日本語などが含まれているかを調べようとしています。
検索する文字の指定として「'あ'」や「'[あ-ん]'」であれば考えている通りに動作しました。
下記コードの(1)〜(4)の部分です。
python
#!/usr/bin/env python3# -*- coding:utf-8 -*-import re #(1)str = 'abあc'check = re.search('あ', str)print(str,'\t',check)#(2)str = 'abc'check = re.search('あ', str)print(str,'\t',check)#(3)str = 'abあc'check = re.search('[あ-ん]', str)print(str,'\t',check)#(4)str = 'abc'check = re.search('[あ-ん]', str)print(str,'\t',check) #(5)str = 'abc'check = re.search('[\xe38180-\xe9beaf]', str)print(str,'\t',check)#(6)str = 'abあc'check = re.search('[\xe38180-\xe9beaf]', str)print(str,'\t',check)
記号も含めたい部分があるので、上記(5)(6)のように、文字コードで指定しました。
「\xe38180-\xe9beaf」と範囲指定しました。
すると、「'abあc'」にも「'abc'」にも「\xe38180-\xe9beaf」が含まれているとなってしまいました。
「'abあc'」も「'abc'」に対しても、「match='a'」となったのは、どのように考えればいいのでしょうか。
文字コードで検索する文字を指定するにはどのように指定すれば良いのでしょうか。
python
~ $ python3 test.py abあc <_sre.SRE_Match object; span=(2, 3), match='あ'> (1)abc None (2) abあc <_sre.SRE_Match object; span=(2, 3), match='あ'> (3)abc None (4)abc <_sre.SRE_Match object; span=(0, 1), match='a'> (5)abあc <_sre.SRE_Match object; span=(0, 1), match='a'> (6)
文字コードで指定する部分を下記のように指定すると
python
str = 'abあc'check = re.search('[\xe38182]', str)print(str,'\t',check)
結果が「None」となりました。“あ”は「e38182」だから、このように指定したのですが、考えている通りに動作しませんでした。
abあc None
0 コメント