質問編集履歴

3

試したコードを追加

2020/08/02 09:51

投稿

gongitune3
gongitune3

スコア12

test CHANGED
File without changes
test CHANGED
@@ -92,7 +92,13 @@
92
92
 
93
93
 
94
94
 
95
+ そのため、
96
+
97
+ ➀後ろにはてなマークをつけて`(否定部分[文字列])?`という表現を試したのですが実現できず、
98
+
99
+ ➁あと`否定部分([文字列])?`という風に文字列の部分だけをあるかないかわからないと表現したのも実現できず、
100
+
95
- そのため、後ろはてなマークをつけて`(否定部分)?`という表現を試したのですが実現できず、あとは`否定部分|`という風に、`否定部分または何もない`という表現も試したのですがやはり実現できず、このようなときはどうしたらよろしいでしょうか。
101
+ ➂さらに`否定部分|`という風に、`否定部分または何もない`という表現も試したのですがやはり実現できず、このようなときはどうしたらよろしいでしょうか。
96
102
 
97
103
 
98
104
 
@@ -104,13 +110,19 @@
104
110
 
105
111
 
106
112
 
107
- // 後ろにはてなマークをつける表現 → 実現できず
113
+ // 後ろにはてなマークをつける表現 → 実現できず
108
114
 
109
115
  $pattern = '{https?://example.com/((?!us)[a-z]{2})?((?!?q=)[^/]+)?}';
110
116
 
111
117
 
112
118
 
119
+ // ➁否定部分の文字列の後ろにはてなマークをつける表現 → 実現できず
120
+
121
+ $pattern = '{https?://example.com/(?!us)([a-z]{2})?(?!\q=)([^/]+)?}';
122
+
123
+
124
+
113
- // 否定部分または何もないという表現 → 実現できず
125
+ // 否定部分または何もないという表現 → 実現できず
114
126
 
115
127
  $pattern = '{https?://example.com/((?!us)[a-z]{2}|)((?!\q=)[^/]+|)}';
116
128
 

2

試したコードの追加

2020/08/02 09:51

投稿

gongitune3
gongitune3

スコア12

test CHANGED
File without changes
test CHANGED
@@ -92,16 +92,28 @@
92
92
 
93
93
 
94
94
 
95
- そのため、後ろにはてなマークをつけて`(否定部分)?`という方法を試したのですが実現できず、このようなときはどうしたらよろしいでしょうか。
95
+ そのため、後ろにはてなマークをつけて`(否定部分)?`という表現を試したのですが実現できず、あとは`否定部分|`という風に、`否定部分または何もない`という表現も試したのですがやはり実現できず、このようなときはどうしたらよろしいでしょうか。
96
96
 
97
97
 
98
98
 
99
99
  ```php
100
100
 
101
+ // 上記コード
102
+
101
103
  $pattern = '{https?://example.com/(?!us)[a-z]{2}(?!?q=)[^/]+}';
102
104
 
105
+
106
+
103
-
107
+ // 後ろにはてなマークをつける表現 → 実現できず
104
108
 
105
109
  $pattern = '{https?://example.com/((?!us)[a-z]{2})?((?!?q=)[^/]+)?}';
106
110
 
111
+
112
+
113
+ // 否定部分または何もないという表現 → 実現できず
114
+
115
+ $pattern = '{https?://example.com/((?!us)[a-z]{2}|)((?!\q=)[^/]+|)}';
116
+
117
+
118
+
107
119
  ```

1

$urlを追加

2020/08/02 09:44

投稿

gongitune3
gongitune3

スコア12

test CHANGED
File without changes
test CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
 
4
4
 
5
- 大まかには`https://example.com/●●?q=▲▲`
5
+ 大まかには`https://example.com/●●▲▲`
6
6
 
7
7
  のような`$url`が与えられ、
8
8
 
9
9
  ➀`●●`が`us`だと不一致としたい
10
10
 
11
- ➁`▲▲`が`?q=`だと不一致としたい
11
+ ➁`▲▲`が`q=`だと不一致としたい
12
12
 
13
13
  という条件で、だいたいうまくできています。
14
14
 
@@ -28,23 +28,23 @@
28
28
 
29
29
  ```php
30
30
 
31
- <?php
32
-
33
31
  /*
34
32
 
35
33
  不一致にしたい$url
36
34
 
37
35
  ************************/
38
36
 
39
- $url = "https://example.com/us?q=aa"; //「us」も「?q=」もあるので、不一致
37
+ $url = "https://example.com/us?q=aaa"; //「us」も「?q=」もあるので、不一致
40
38
 
41
- $url = "https://example.com/jp?q=aa"; //「?q=」があるので、不一致
39
+ $url = "https://example.com/jp?q=aaa"; //「q=」があるので、不一致
42
40
 
43
- $url = "https://example.com/us?qx=aa"; //「us」があるので、不一致
41
+ $url = "https://example.com/us?qx=aaa"; //「us」があるので、不一致
44
42
 
45
- $url = "https://example.com/us"; //「us」があるので、不一致
43
+ $url = "https://example.com/us"; //「us」があるので、不一致
46
44
 
47
- $url = "https://example.com/?q=aa"; //「?q=」があるので、不一致
45
+ $url = "https://example.com/?q=aaa"; //「q=」があるので、不一致
46
+
47
+ $url = "https://example.com/?sort=date&q=aaa"; //「q=」があるので、不一致
48
48
 
49
49
 
50
50
 
@@ -54,11 +54,11 @@
54
54
 
55
55
  ************************/
56
56
 
57
- $url = "https://example.com/jp?qx=aa"; //「us」も「?q=」もないので、一致
57
+ $url = "https://example.com/jp?qx=aaa"; //「us」も「q=」もないので、一致
58
58
 
59
- $url = "https://example.com/jp"; //「us」も「?q=」もないので、一致 → できない
59
+ $url = "https://example.com/jp"; //「us」も「q=」もないので、一致 → できない
60
60
 
61
- $url = "https://example.com/"; //「us」も「?q=」もないので、一致 → できない
61
+ $url = "https://example.com/"; //「us」も「q=」もないので、一致 → できない
62
62
 
63
63
 
64
64
 
@@ -68,9 +68,9 @@
68
68
 
69
69
  ************************/
70
70
 
71
- $pattern = '{https?://example.com/(?!us)[a-z]{2}(?!?q=)[^/]+}';
71
+ $pattern = '{https?://example.com/(?!us)[a-z]{2}(?!\q=)[^/]+}';
72
72
 
73
- var_dump( is_match( $url, $pattern) );
73
+ var_dump( is_match($url,$pattern) );
74
74
 
75
75
  function is_match( $url, $pattern ){
76
76