0

これが私が持っているかもしれない文字列です:

(MyStringIsOneWholeWord *)

次のjavascript正規表現を使用して、角かっこの後のテキストがで始まる場合はそれを取得しましたMy

/(^|\s|\()+My(\w+)/g,

これに伴う問題は、それを見つけたのは文字/文字であるため、結果に最初の括弧が含まれることです。

結果のブラケットを削除するにはどうすればよいですか?


編集

詳細についてC Languageは、SHJSシンタックスハイライトのjavascriptファイルを編集しています。

この質問に関連するすべてのコードは次のとおりです。

[
 /(^|\s|\()+My(\w+)/g,
 'sh_keyword',
 -1
]
4

3 に答える 3

2

これがJSだけの場合は、キャプチャグループを使用できます。

/(^|\s|\()+(My\w+)/g

次に、そのグループで試合を行います。ただし、SHJSは一致全体を使用するため、JavaScriptの正規表現エンジンではサポートされていないルックビハインドを使用する必要があるようです。


これを回避するには、ドキュメントを読むことをお勧めします。ここのこの部分:

言語を定義したら、SHJSで使用されるJavaScript形式に変換する必要があります。SHJSのソースディストリビューションからのsh2js.plスクリプトが必要になります。sh2js.plスクリプトはPerlで記述されており、Parse::RecDescentモジュールが必要です。

結果のJSファイルは編集するためのものではないことを教えてくれます。ドキュメントによると、SHJSはここで指定されているGNUSource-highlightingと同じ形式を使用しています。したがって、元の.lang(リンク)ファイルを編集してから、それらをに変換する必要があり.jsます。

于 2010-09-06T17:27:20.613 に答える
1

あなたが望むのは、肯定的な後読みアサーションです。残念ながら、Javascript はそれらをサポートしていません。ただし、Steven Levithan は次のブログ投稿でこれについて説明しています: http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript

編集: 同じ著者による記事の更新: http://blog.stevenlevithan.com/archives/javascript-regex-lookbehind

于 2010-09-06T18:56:16.857 に答える
0

何をキャプチャしたいのか正確にはわかりませんが、これらのいくつかを試すことができます:

StringIsOneWholeWord$1 でキャプチャ:

/(?:^|\s|\()+My(\w+).*\)/

MyStringIsOneWholeWord$1 でキャプチャ:

/(?:^|\s|\()+(My\w+).*\)/

MyStringIsOneWholeWord *$1 でキャプチャ:

/(?:^|\s|\()+(My\w+.*)\)/

StringIsOneWholeWord *$1 でキャプチャ:

/(?:^|\s|\()+My(\w+.*)\)/
于 2010-09-06T18:21:43.367 に答える