22

私はこの文字列を持っています:

City - これはテキストです。これはもう少しです - そしてここに続きます。

最初の '-' で文字列を分割して 'city' を見つけたいと思います (単なるサンプル ワードであり、他のワードでもかまいません)。' - ' の後の残りのテキストを検索するプラス。

私はこの式を構築しました:

(^[\D\W\S]*)( - )([\D\W\S]*)

しかし、これは ' - ' の最初の出現ではなく、最後の出現を検出します。

最初の発生で停止するにはどうすればよいですか?

4

1 に答える 1

41

最も簡単な解決策は、ダッシュが最初のグループの一部であることを明示的に禁止することです。

^([^-]*) - (.*)

説明:

^        # Start of string
([^-]*)  # Match any number of characters except dashes
\ - \    # Match a dash (surrounded by spaces)
(.*)     # Match anything that follows

ただし、文字列の最初のグループにダッシュが含まれる可能性がある場合 (スペースで囲まれていない場合)、これは失敗します。その場合は、遅延量指定子を利用できます。

^(.*?) - (.*)

説明:

^        # Start of string
(.*?)    # Match any number of characters, as few as possible
\ - \    # Match a dash (surrounded by spaces)
(.*)     # Match anything that follows
于 2012-05-12T20:40:25.930 に答える