2016-01-03 44 views
0

我有字符串可以是以下格式:匹配文本之前結腸/連字符

  • A:B:C
  • A - B - C^
  • A - B:C
  • 甲:乙 - Visual C

在任何情況下,我需要提取的一切,直到B,包括結腸/連字符和空格之後,所以對於例子,這將是以下幾點:

  • 答:
  • A -
  • A -
  • 答:

對於實施例1,^[^:]*:\s*將工作

例如2,^[^-]*-\s*將工作

例如1,2和3,^([^-]*-|[^:]*:)\s*將工作

我想的東西,會給我想要的比賽爲例子。

+0

什麼是你最後的正則表達式的問題?據我所見,它適用於所有示例。 –

+0

@WillemVanOnsem它會返回「A:B - 」爲第四個示例而不是所需的「A:」 – JCarter

回答

6

請注意,您可以否定在方括號中的多個字符,所以只要結合你的例子1和2

^[^:-]*[:-]\s* 

在那個沒有連字符或冒號後面跟冒號或連字符和空格開頭匹配任何字符,如果有任何

https://regex101.com/r/cK6hC7/1

+0

優秀的答案。唯一可能的變化是括號,以便匹配的字符串可以被提取和使用,但這取決於OP打算做什麼。 –

0

我會確保*避免使用,以避免與失蹤開始字母的情況下,並確保了正則表達式避免兩者:和 -

^([^: - ] + [ - ] \ S +)

https://regex101.com/r/sX0zO0/2

相關問題