teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2019/11/16 07:37

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -12,4 +12,4 @@
12
12
  Python側でいくらraw文字列指定をしても意味はありません。
13
13
 
14
14
  むしろバックスラッシュはエスケープ処理に使われるので、
15
- 正規表現は "\?" あるいは r"?" にするとより丁寧でしょう。
15
+ 正規表現は "\?" あるいは r"?" にするとより丁寧でしょう。後者がより好ましいです。

2

表現の修正

2019/11/16 07:36

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -2,7 +2,7 @@
2
2
  "?report=select"という文字列まで出力されてしまいます。
3
3
 
4
4
  仕様です。"hoge?piyo" でもマッチするでしょう。
5
- re.matchは先頭一致、re.searchは部分一致を検出できます。
5
+ re.matchは先頭一致、re.searchは部分一致を試行します。
6
6
 
7
7
  アンカー ^ $ を併用するか、re.fullmatchを使って下さい。
8
8
 

1

追記

2019/11/16 07:35

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,7 +1,15 @@
1
1
  > これで?pが含まれる文字列だけが出力されると思いきや、
2
2
  "?report=select"という文字列まで出力されてしまいます。
3
3
 
4
- 仕様です。"hoge?fuga" でもマッチするでしょう。
4
+ 仕様です。"hoge?piyo" でもマッチするでしょう。
5
5
  re.matchは先頭一致、re.searchは部分一致を検出できます。
6
6
 
7
- アンカー ^ $ を併用するか、re.fullmatchを使って下さい。
7
+ アンカー ^ $ を併用するか、re.fullmatchを使って下さい。
8
+
9
+ > そこでRAW文字の検索なら出来るかと思い
10
+
11
+ ?は正規表現中では特殊な意味を持ちますが、Pythonの文字列内ではただの文字です。
12
+ Python側でいくらraw文字列指定をしても意味はありません。
13
+
14
+ むしろバックスラッシュはエスケープ処理に使われるので、
15
+ 正規表現は "\?" あるいは r"?" にするとより丁寧でしょう。