質問

私はような文字列を持っています hello /world today/

交換する必要があります /world today//MY NEW STRING/

私が見つけたマニュアルを読む

newString = string.match("hello /world today/","%b//")

一緒に使用できます gsub 置き換えるために、しかし、私はテキストだけを返すエレガントな方法もあるのではないかと思いました /, 、私はそれをトリミングすることができることを知っていますが、パターンがあるかどうか疑問に思いました。

役に立ちましたか?

解決

次のいずれかのようなものを試してください:

  • slashed_text = string.match("hello /world today/", "/([^/]*)/")
  • slashed_text = string.match("hello /world today/", "/(.-)/")
  • slashed_text = string.match("hello /world today/", "/(.*)/")

これは機能します string.match キャプチャがない場合は、パターンからキャプチャ、または一致したテキスト全体を返します。重要なのは、LUAパターンが完全な正規表現言語ではないことを思い出して、パターンが適切な量の貪欲さを持っていることを確認することです。

最初の2つは同じテキストと一致する必要があります。 1つ目は、パターンができるだけ多くの非スラッシュを一致させることを明示的に必要としました。 2番目の(ありがとうLHF)は、すべてのキャラクターの最短スパンに続いてスラッシュが続きます。 3番目は貪欲で、それはまだスラッシュが続くことができる最も長いキャラクターのスパンに一致します。

%b// 元の質問では、利点はありません /.-/ 2つの区切り文字は同じキャラクターであるためです。

編集: LHFによって提案されたパターンを追加し、さらに説明しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top