質問編集履歴
3
試したコードを追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -45,16 +45,22 @@
|
|
45
45
|
```
|
46
46
|
日本語でいうと、「『否定部分(`●●`や`▲▲`)』それ自体が、あるかないかわからない」ということになるのかと思います。
|
47
47
|
|
48
|
+
そのため、
|
49
|
+
➀後ろにはてなマークをつけて`(否定部分[文字列])?`という表現を試したのですが実現できず、
|
50
|
+
➁あと`否定部分([文字列])?`という風に文字列の部分だけをあるかないかわからないと表現したのも実現できず、
|
48
|
-
|
51
|
+
➂さらに`否定部分|`という風に、`否定部分または何もない`という表現も試したのですがやはり実現できず、このようなときはどうしたらよろしいでしょうか。
|
49
52
|
|
50
53
|
```php
|
51
54
|
// 上記コード
|
52
55
|
$pattern = '{https?://example.com/(?!us)[a-z]{2}(?!?q=)[^/]+}';
|
53
56
|
|
54
|
-
// 後ろにはてなマークをつける表現 → 実現できず
|
57
|
+
// ➀後ろにはてなマークをつける表現 → 実現できず
|
55
58
|
$pattern = '{https?://example.com/((?!us)[a-z]{2})?((?!?q=)[^/]+)?}';
|
56
59
|
|
60
|
+
// ➁否定部分の文字列の後ろにはてなマークをつける表現 → 実現できず
|
61
|
+
$pattern = '{https?://example.com/(?!us)([a-z]{2})?(?!\q=)([^/]+)?}';
|
62
|
+
|
57
|
-
// 否定部分または何もないという表現 → 実現できず
|
63
|
+
// ➂否定部分または何もないという表現 → 実現できず
|
58
64
|
$pattern = '{https?://example.com/((?!us)[a-z]{2}|)((?!\q=)[^/]+|)}';
|
59
65
|
|
60
66
|
```
|
2
試したコードの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -45,10 +45,16 @@
|
|
45
45
|
```
|
46
46
|
日本語でいうと、「『否定部分(`●●`や`▲▲`)』それ自体が、あるかないかわからない」ということになるのかと思います。
|
47
47
|
|
48
|
-
そのため、後ろにはてなマークをつけて`(否定部分)?`という
|
48
|
+
そのため、後ろにはてなマークをつけて`(否定部分)?`という表現を試したのですが実現できず、あとは`否定部分|`という風に、`否定部分または何もない`という表現も試したのですがやはり実現できず、このようなときはどうしたらよろしいでしょうか。
|
49
49
|
|
50
50
|
```php
|
51
|
+
// 上記コード
|
51
52
|
$pattern = '{https?://example.com/(?!us)[a-z]{2}(?!?q=)[^/]+}';
|
53
|
+
|
52
|
-
|
54
|
+
// 後ろにはてなマークをつける表現 → 実現できず
|
53
55
|
$pattern = '{https?://example.com/((?!us)[a-z]{2})?((?!?q=)[^/]+)?}';
|
56
|
+
|
57
|
+
// 否定部分または何もないという表現 → 実現できず
|
58
|
+
$pattern = '{https?://example.com/((?!us)[a-z]{2}|)((?!\q=)[^/]+|)}';
|
59
|
+
|
54
60
|
```
|
1
$urlを追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
下記コードに並ぶ`$url`のうち、最後の2つができなくて行き詰っています。
|
2
2
|
|
3
|
-
大まかには`https://example.com/●●
|
3
|
+
大まかには`https://example.com/●●▲▲`
|
4
4
|
のような`$url`が与えられ、
|
5
5
|
➀`●●`が`us`だと不一致としたい
|
6
|
-
➁`▲▲`が`
|
6
|
+
➁`▲▲`が`q=`だと不一致としたい
|
7
7
|
という条件で、だいたいうまくできています。
|
8
8
|
|
9
9
|
しかしここに
|
@@ -13,28 +13,28 @@
|
|
13
13
|
それが下記の最後の2つの`$url`で、`→ できない`とある部分です。
|
14
14
|
|
15
15
|
```php
|
16
|
-
<?php
|
17
16
|
/*
|
18
17
|
不一致にしたい$url
|
19
18
|
************************/
|
20
|
-
$url = "https://example.com/us?q=
|
19
|
+
$url = "https://example.com/us?q=aaa"; //「us」も「?q=」もあるので、不一致
|
21
|
-
$url = "https://example.com/jp?q=
|
20
|
+
$url = "https://example.com/jp?q=aaa"; //「q=」があるので、不一致
|
22
|
-
$url = "https://example.com/us?qx=
|
21
|
+
$url = "https://example.com/us?qx=aaa"; //「us」があるので、不一致
|
23
|
-
$url = "https://example.com/us";
|
22
|
+
$url = "https://example.com/us"; //「us」があるので、不一致
|
24
|
-
$url = "https://example.com/?q=
|
23
|
+
$url = "https://example.com/?q=aaa"; //「q=」があるので、不一致
|
24
|
+
$url = "https://example.com/?sort=date&q=aaa"; //「q=」があるので、不一致
|
25
25
|
|
26
26
|
/*
|
27
27
|
一致にしたい$url
|
28
28
|
************************/
|
29
|
-
$url = "https://example.com/jp?qx=
|
29
|
+
$url = "https://example.com/jp?qx=aaa"; //「us」も「q=」もないので、一致
|
30
|
-
$url = "https://example.com/jp";
|
30
|
+
$url = "https://example.com/jp"; //「us」も「q=」もないので、一致 → できない
|
31
|
-
$url = "https://example.com/";
|
31
|
+
$url = "https://example.com/"; //「us」も「q=」もないので、一致 → できない
|
32
32
|
|
33
33
|
/*
|
34
34
|
検証を実行
|
35
35
|
************************/
|
36
|
-
$pattern = '{https?://example.com/(?!us)[a-z]{2}(?!
|
36
|
+
$pattern = '{https?://example.com/(?!us)[a-z]{2}(?!\q=)[^/]+}';
|
37
|
-
var_dump( is_match(
|
37
|
+
var_dump( is_match($url,$pattern) );
|
38
38
|
function is_match( $url, $pattern ){
|
39
39
|
if ( preg_match( $pattern, $url , $match ) ) {
|
40
40
|
return '一致';
|