2017-12-13 7 views
3

私はTodo.txtフォーマットを可能にするモードを作成しようとしていますが、これは非常に単純ですが、codemirrorの結果が一致しているときに、codemirrorのシンプルモードを使用して奇妙な正規表現の動作

基本的には、空白文字の後ろに "x"で始まるすべての行をマークし、この条件を行の先頭だけに置くことを試みていますが、正規表現は行の途中で文字列をピックアップします。

他のJavaScriptの正規表現のツールにしようとしたとき、この条件に合致していない私の正規表現:

{regex: /^(x).*$/, token: "task-completed"} 

そして、私がテストだテキスト:ここ

https://regex101.com/r/kUXTqf/1は、シンプルモードの定義から、私の正規表現のラインでありますに対して:

x 2017-12-12 @geek add file location preference option +todotxtapp 
(A) @geek completed task syntax highlighter rule needs tweak - it includes any character follows with whitespace - starting in the middle of the line +todotxtapp 
(B) @geek design new app icon +todotxtapp 
(C) @geek add priority shortcut cmd+up/down or similar +todotxtapp 
asdasdasdasdasa x dsljhdsfkljg dhsklf sdaf 

実際には、最初の行に一致する必要があります。しかし、2行目と最後の行の半分に一致します。ここ 参照結果:http://take.ms/S2PEL

+0

奇妙なことに、この動作について説明するドキュメントが見つかりませんでした。 Regex101のデモが示すように、あなたの思うようにパターンが動作することを期待しています。 –

答えて

3

私はCodeMirrorに慣れていないけど、ドキュメントのオフに行く、(緩く離陸したことはありません一般的なJavaScriptの構文ハイライト仕様に基づく)

シンプルモード、状態です各状態にはトークンに一致する多数の規則があります。

正規表現は、それがトークン上で動作し、ライン上では動作しません。したがって、asdasdasdasdasa,x,dsljhdsfklhgはすべて個別に試験される。驚くべきことに、x/^(x).*$/と一致します。

{regex: /x/, token: "task-completed", sol: true} 

sol:ブール

trueの場合、このトークンは、意志それは、あなたがこの(私はそれをテストすることはできませんと、あなたが、それを微調整する必要があるかもしれません)のような何かをしたいようだ

行の先頭にのみ一致します。 (。あなたが理由のJavaScriptの正規表現APIの制限のため、この文脈で期待通り^正規表現マーカーは動作しません)

編集:私は言わなければならない、私はsyntaxで何が起こっているか非常に分かりません。

+0

ありがとうアマダン、それを試す前に、私はシンプルモードのソースを読んで、単にルール定義のゾルをチェックしています。あなたの提案は魅力的に機能しました。 –

関連する問題