2015-10-23 4 views
1

У меня есть две отдельные строки:RegEx получить строку после определенного символа, если специфика не существует

  • Это тестовая строка
  • Это: является тестовой строки

Как бы Я создаю регулярное выражение, которое:

  1. Если существует «:», то получите все после «:» и пробела.
  2. Если «:» НЕ существует, тогда получите всю строку.

Например, регулярное выражение необходимо сделать следующее:

  • Это тестовая строка> Это тестовая строка
  • Это: тест строка> является тестовой строки
+0

попробовать '((<=:.) (() +)) | \ Б [A-Za-Z0- 9 \ t \ n \ v \ f \ r] + $ ' – SIslam

ответ

2
^([^:\n]+)$|^[^:\n]*:(.*$) 

Вы можете использовать this.Grab в capture или group .Увидь демо.

https://regex101.com/r/gT6vU5/9

Если вы хотите, чтобы совпадать с empty string тоже использовать

^([^:\n]*)$|^[^:\n]*:(.*$) 
+0

Я думаю, что ваш первый' + 'должен быть' * '. Пустая строка не является исключением в правилах OP, это допустимая строка, которая не содержит ':', поэтому должна быть сопоставлена. – hvd

+0

@hvd прилагается ...... – vks