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

回答編集履歴

2

修正

2016/08/09 03:28

投稿

jawa
jawa

スコア3021

answer CHANGED
@@ -30,7 +30,7 @@
30
30
  これだけだと、例えば123.4を対象とした場合"2"と"."がヒットします。
31
31
 
32
32
  取得対象を数値に限定して
33
- `(?<=[\d.])\d(?=[\d.])`
33
+ `(?<=\d)\d(?=\d)`
34
34
  とすると、"2"だけがヒットします。
35
35
 
36
36
  目的の形にいちばん近い正規表現は

1

ADD

2016/08/09 03:28

投稿

jawa
jawa

スコア3021

answer CHANGED
@@ -17,4 +17,22 @@
17
17
  $result[2]=1
18
18
  $result[3]=.
19
19
  $result[4]=1
20
- のような結果を期待されるのであれば、noricyan2さん提示の方法でできるのではないでしょうか。
20
+ のような結果を期待されるのであれば、noricyan2さん提示の方法でできるのではないでしょうか。
21
+
22
+ 追記
23
+ ---
24
+ 条件として
25
+ 「まだ読んでいない右部分に数値があって、既に読んだ部分に数値がある位置」
26
+ の言葉をそのままとらえると、正規表現としては
27
+ `(?<=\d).(?=\d)`
28
+ になると思います。(左側が数値で、右側も数値となる一文字)
29
+
30
+ これだけだと、例えば123.4を対象とした場合"2"と"."がヒットします。
31
+
32
+ 取得対象を数値に限定して
33
+ `(?<=[\d.])\d(?=[\d.])`
34
+ とすると、"2"だけがヒットします。
35
+
36
+ 目的の形にいちばん近い正規表現は
37
+ `(?<=[\d\.])?\d(?=[\d])?`
38
+ 「左側に1or0文字の数字またはピリオドがあり、右側に1or0文字の数字がある数値」でしょうか。