私は、文字列を持っている...など、括弧や+
記号などの特殊文字と正規表現エスケープは、|で区切られたエスケープ部分文字列ではありません。
str = "bookworms|actuarial-consultants|uninterruptible-power-supply-(ups)-experts|c++programming-developers"
。私は、私は手動で逃げることができない|
で区切られた多数のサブストリングを収容することができます
bookworms|actuarial-consultants|uninterruptible-power-supply-\(ups\)-experts|c\+\+programming-developers
https://gyazo.com/d545ab1a8d7d178a6079f4b9cb125cce
私の文字列のように手動でそれらをエスケープしない限り、
はuninterruptible-power-supply-(ups)-experts
とc++programming-developers
と一致することはできません。そして、文字列はクエリメソッドを介して生成されるためです。
Regexp.escape
を試しましたが、正しい出力がありませんでした。私はまだescape
方法は、私の文字列に二重の\\
を追加して、bookworms
https://gyazo.com/ae0bb43a1dc84f40deb18e3ed76d490e
のようにも、通常の部分文字列をuninterruptible-power-supply-(ups)-experts
とc++programming-developers
と一致することはできません。
bookworms\\|actuarial\\-consultants\\|uninterruptible\\-power\\-supply\\-\\(ups\\)\\-experts\\|c\\+\\+programming\\-developers
"私はRegexp.escapeを試しましたが、正しいものを出力しませんでした"とはどういう意味ですか?私たちはあなたが何を試みたか分かりませんが、あなたがそれを伝えるためには「脱出」します。 'Regexp.union'はあなたがやろうとしていることに対しても非常に便利です。 "[mcve]"を読んでください。私たちはあなたを助けるためにもっと多くの情報が必要です。 –
'Regexp.escape'がバックスラッシュを倍増させていると思いますか? '' \\ "''は2つではなく、1つのバックスラッシュです。あなたが 'Regexp.escape(str)'を置くと、適切にエスケープされた文字列を取得していることがわかります。 –
「または」もエスケープされていることを除いて、正しくエスケープされています。 –