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

回答編集履歴

1

補足を追加

2020/08/02 07:40

投稿

Daregada
Daregada

スコア11990

answer CHANGED
@@ -1,3 +1,6 @@
1
1
  否定先読みは、**位置にマッチする**のであって、文字にはマッチしないんです。
2
2
 
3
- たとえば、ひとつめのパターンは、「`https://example.com//`」と「`http://exapmle.com//`」にしかマッチしませんが、たぶん意図しているのは違うものですよね? `(?!xx)`は「xxが書かれていない位置」にマッチするのであって、そこに書かれている文字をマッチさせたかったら、続けて`[^/]+`みたいな「文字(列)とマッチするパターン」を続けて書かないといけません。
3
+ たとえば、ひとつめのパターンは、「`https://example.com//`」と「`http://exapmle.com//`」にしかマッチしませんが、たぶん意図しているのは違うものですよね? `(?!xx)`は「xxが書かれていない位置」にマッチするのであって、そこに書かれている文字をマッチさせたかったら、続けて`[^/]+`みたいな「文字(列)とマッチするパターン」を続けて書かないといけません。
4
+
5
+ 追加分:
6
+ ふたつめのパターンのように`com/(?!xx)(?!?q=)`と並べて書くと、これは「/」の直後が「xxが書かれていない位置」で、なおかつ「?q=が書かれていない位置」のときにマッチするということになります。おそらくこれも意図しているものとは違いますよね。