質問編集履歴
3
試したコードを追加
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
試したコードの追加
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を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
大まかには`https://example.com/●●
|
5
|
+
大まかには`https://example.com/●●▲▲`
|
6
6
|
|
7
7
|
のような`$url`が与えられ、
|
8
8
|
|
9
9
|
➀`●●`が`us`だと不一致としたい
|
10
10
|
|
11
|
-
➁`▲▲`が`
|
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"; //「
|
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"; //「
|
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」も「
|
57
|
+
$url = "https://example.com/jp?qx=aaa"; //「us」も「q=」もないので、一致
|
58
58
|
|
59
|
-
$url = "https://example.com/jp"; //「us」も「
|
59
|
+
$url = "https://example.com/jp"; //「us」も「q=」もないので、一致 → できない
|
60
60
|
|
61
|
-
$url = "https://example.com/"; //「us」も「
|
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}(?!
|
71
|
+
$pattern = '{https?://example.com/(?!us)[a-z]{2}(?!\q=)[^/]+}';
|
72
72
|
|
73
|
-
var_dump( is_match(
|
73
|
+
var_dump( is_match($url,$pattern) );
|
74
74
|
|
75
75
|
function is_match( $url, $pattern ){
|
76
76
|
|