* 文字で囲まれた文字列に一致する正規表現を書きたいと思っています。これは、それらを使用して**物事を太字にする** ようにマークダウンするのと同じです。
しかし、私はまた、最初と最後の*の数を可変量にしたいと思っています。星の数は、その文字列の重要性に相当します。
現時点ではこれを使用しています。
/(\*\*\*|\*\*|\*)(.*?)\1/
どちらの側でも最大 ***3*** で機能します。これは、* の間の文字列と *** を含む文字列の両方を返します。次に、その文字列の長さを数えて * の数を取得します。
Ruby では、これは次のようになります。
"*this is important*, but this is ***very important***.scan(/(\*\*\*|\*\*|\*)(.*?)\1/).each do |match|
points << { :str => match[1], :importance => match[0].length }
end
正規表現はほとんどの部分で正常に機能していますが、********本当に重要なものを取得したい場合********; 表現は少し手に負えなくなります-これまでの方法でそれを行います.
私の現在のパターンは、* の量を検索し、それと同じ文字列の別の出現の間のテキストを見つけることを理解しています。しかし、次のような文字列などの人為的エラーを説明することもできれば便利です。
**これは非常に重要*ですが、***これは本当に重要です****。
皆さんありがとう!