Googleスクリプトを使用して、常に次のような文字列部分を一致させようとしています。 * YYYYMMDD; hhmm * 例:* 20170701; 0900 *
私はこの正規表現を定義しました:
var regExp = ("(?:*)(?P<date>d+)(?:;)(?P<time>d+)(?:*)","gi");
そして、それを使用して呼び出します:
var datepart = textbody.match(regExp);
ただし、同じテキストが https://regex101.com/ うまくいく。私が間違っていることは何ですか?
回答:
回答№1は0PCREエンジンの正規表現を作成しましたが、Google AppsスクリプトではJavaScriptに正規表現を使用する必要があります。
すべての名前付きキャプチャグループを削除します(JSではサポートされていません。 (?P<date>d+)
=> (d+)
)、正規表現リテラルを使用します(つまり、 RegExp("pattern", "gi")
=> /pattern/gi
、しかし i
ここでは必要ありません。パターンに文字が含まれている場合にのみ使用してください)、グローバル修飾子を削除して、 捕獲群 そのまま。
var rx = /*(d+);(d+)*/;
var datepart = textbody.match(rx);
var date, time;
if (datepart) {
date = datepart[1];
time = datepart[2];
}
ご了承ください (?:*)
= *
キャプチャしていないグループはまだ消費パターン(つまり、一致したものが一致値に追加されます)。正規表現のサブパートを取得したいので、キャプチャグループに集中するだけです。 (...)
部品。