コード:
https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg
589944494365122
正規表現を使用してその文字列から抜け出すにはどうすればよいですか?
私がこれまでにできる最善のことは_(.*)
結果です589944494365122_1446403980_n.jpg
まず、問題の説明を次のように一般化する必要があります。文字列の最初の文字列の後に、空でない最長の数字の部分文字列を取得するにはどうすればよい_
ですか。あなたが文字通り求めた正規表現はですが(589944494365122)
、それはあなたが期待するものではありません。
あなたが欲しいものについての私の推測によると、答えはである可能性があります_(\d+)
。
これは機能します。
var s = "https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg";
var m = /_([^_]*)/.exec(s);
console.log( m[1] ); // 589944494365122
を\d+_(\d+)_\d+_n\.jpg
使用しますが、URL の正確な仕様によっては、少し調整が必要になる場合があります。
また、言語によっては、これを少し変更する必要がある場合があります。私が提案するソリューションは、たとえば Ruby (および他の多くの正規表現の実装) で機能します。ここ\d
では任意の数字に一致し、\d+
1 つ以上の数字を意味します。前の文字.jpg
は常にあると思いますが、これを(任意の文字) または(任意の単語文字)n
に置き換えることで変更できます。n
.
\w
あなたの入力で見ることができる抽出のルールは次のとおりです。
211099_589944494365122_1446403980
[0-9]+_ part we want _[0-9]+
そのため、後読みと先読みを使用した正規表現が役立ちます。
'(?<=\d_)\d+(?=_\d)'
grep でテストします。
kent$ echo " https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg"|grep -Po '(?<=\d_)\d+(?=_\d)'
589944494365122