回答編集履歴

4

追記

2021/10/18 00:42

投稿

itagagaki
itagagaki

スコア8402

test CHANGED
@@ -25,3 +25,17 @@
25
25
 
26
26
 
27
27
  当然`=>`とかがあればそこで止まっちゃうことになります。
28
+
29
+
30
+
31
+ 解説
32
+
33
+
34
+
35
+ 否定的後読み(?<!pattern)
36
+
37
+ というものが使用できます。
38
+
39
+
40
+
41
+ [正規表現の先読み・後読みを極める! - あらびき日記](https://abicky.net/2010/05/30/135112/)

3

コードを修正

2021/10/18 00:42

投稿

itagagaki
itagagaki

スコア8402

test CHANGED
@@ -1,14 +1,14 @@
1
- そもそも`hoge`の後ろのダブルクオートで止まってます?
1
+ ~~そもそも`hoge`の後ろのダブルクオートで止まってます?~~
2
2
 
3
- あと`->`で止まるのは最短一致だから。
3
+ ~~あと`->`で止まるのは最短一致だから。~~
4
4
 
5
5
 
6
6
 
7
- `(<input\s+name="([^"]*?)".*>)` でいいのでは?
7
+ ~~`(<input\s+name="([^"]*?)".*>)` でいいのでは?~~
8
8
 
9
9
 
10
10
 
11
- 追記
11
+ 上のはちょっと勘違い
12
12
 
13
13
 
14
14
 
@@ -20,7 +20,7 @@
20
20
 
21
21
 
22
22
 
23
- `(<input\s+name="([^"]*?)".*?(?<!-)>)`
23
+ `(<input\s+name="(.*?)".*?(?<!-)>)`
24
24
 
25
25
 
26
26
 

2

追記

2021/10/18 00:36

投稿

itagagaki
itagagaki

スコア8402

test CHANGED
@@ -5,3 +5,23 @@
5
5
 
6
6
 
7
7
  `(<input\s+name="([^"]*?)".*>)` でいいのでは?
8
+
9
+
10
+
11
+ (追記)
12
+
13
+
14
+
15
+ 単一のタグだけ取り出したいので最短一致にしないといけないのはわかります。
16
+
17
+ しかしクオートで囲まれた中の文字を無視するという都合の良いことは正規表現ではできません。
18
+
19
+ しょうがないので`->`ではない`>`を目指すしかないですね。
20
+
21
+
22
+
23
+ `(<input\s+name="([^"]*?)".*?(?<!-)>)`
24
+
25
+
26
+
27
+ 当然`=>`とかがあればそこで止まっちゃうことになります。

1

コードを修正

2021/10/18 00:32

投稿

itagagaki
itagagaki

スコア8402

test CHANGED
@@ -1,5 +1,7 @@
1
1
  そもそも`hoge`の後ろのダブルクオートで止まってます?
2
+
3
+ あと`->`で止まるのは最短一致だから。
2
4
 
3
5
 
4
6
 
5
- `(<input\s+name="([^"]*?)".*?>)` でいいのでは?
7
+ `(<input\s+name="([^"]*?)".*>)` でいいのでは?