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

回答編集履歴

2

fix

2018/01/10 05:03

投稿

mattn
mattn

スコア5030

answer CHANGED
@@ -1,3 +1,5 @@
1
+ **下記内容には間違いがあります。間違った経緯はコメント欄を参照下さい。**
2
+
1
3
  正規表現エンジンにより実装が異なります。実際には DFA(決定性有限オートマトン) と NFA(非決定性オートマトン) の違いにより結果が異なります。
2
4
 
3
5
  DFA の場合、今見ている入力に対して次にやってくる遷移が確定されます。逆に NFA の場合、各々の入力に対して遷移は複数存在しています。

1

fix

2018/01/10 05:03

投稿

mattn
mattn

スコア5030

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  DFA の場合、今見ている入力に対して次にやってくる遷移が確定されます。逆に NFA の場合、各々の入力に対して遷移は複数存在しています。
4
4
 
5
- 今回のケースであれば24行目の2文字目の「値」は、DFA の場合は24行目1文字目の「値」のマッチにより遷移を失ってしまった為、マッチしなくなったという結果です。(文字がない、つまり先行しない)
5
+ 今回のケースであれば24行目の2文字目の「値」は、DFA の場合は24行目1文字目の「値」のマッチにより遷移を失ってしまった為、2文字目はマッチしなくなったという結果です。(文字がない、つまり先行しない)
6
6
 
7
7
  逆に NFA の場合 `(?!値段)値` は先行する事が必須となる為、24文字目1文字目は先行するものがありませんのでマッチしません。ちなみに20行目の違いもそれです。しかし24行目2文字目にはパターンにマッチする事になります。
8
8