2017-02-15 3 views
2

ゼロ幅の否定先読みアサーションはRでどのように機能しますか?

strsplit('abc dcf', split = '(?=c)', perl = T) 

の出力が期待されます。

私はそれが前の最後の文字ならばsplitedされないだろうと思っbecasue私の期待が

[[1]] 
[1] "a" "b" "c " "d" "cf" 

ありながら、しかし、

strsplit('abc dcf', split = '(?!c)', perl = T) 

の出力は

[[1]] 
[1] "a" "b" "c" " " "d" "c" "f" 

ですチャンクはチャンクcに一致します。否定的な先読みに対する私の理解は間違っていますか?

+0

を試すことができます(?<!C)'否定後読み、ない '(?!C)' – Toto

+0

@Totoで否定先読みです。それは問題ではないようです。 'strsplit( 'abc dcf'、split = '(?<!c)'、perl = T)'と同じ出力を出力します。 ) 'あなたのコメントに基づいて少し質問を編集しました。 – mt1022

+0

それが肯定的であるか否定的な先読みであるかは本当に重要ではありません。重要なのは、 'strsplit'が長さゼロのマッチを扱う方法です。 –

答えて

1

我々は `

strsplit('abc dcf', "(?![c ])\\s*\\b", perl=TRUE) 
#[[1]] 
#[1] "a" "b" "c " "d" "cf" 
+3

HI。私のコードがうまくいかない理由を説明できますか?私はまだ混乱している。また、私はスペースを削除する必要はありません。 – mt1022

+0

@ mt1022スペースを削除しないでポストを更新しました – akrun

関連する問題