2016-11-30 3 views
-6

Как получить строку после 2 двоеточияRegex Colon Строка 2Colons

:somelongstring::123abc: 

как получить только строку 123abc

я попытался это: Regex to find a string after the last colon

+1

':: ([^:] +):'? .. – Maroun

+0

или ': ([^:] +): $' – maraca

+0

@maraca Это будет захватывать строку после ':', а не '::' как запрошено ОП. – Maroun

ответ

0

Я уверен, что вы просто хотите это:

"::(\w+)" 
+0

Что для '@' и '' 'для? И почему вы избегаете': '? – Maroun

+0

' @ 'используется в C# в любое время, когда вы используете символ' \\ '' в строке, а im избегаете их, потому что 1 его безобидные и 2. Есть определенные сценарии в регулярном выражении, где ':' является специальным, как в '(?:' – maksymiuk

+0

** 1. ** Вы предполагаете, что OP использует C#. ** 2. ** Нет необходимости в все, что нужно, чтобы избежать ':' здесь, почему вы заботитесь о других случаях, которые здесь не существуют? – Maroun

0

Если вы правильно поняли, что хотите найти что-нибудь, что после двойного двоеточия «::» и перед одним двоеточием «:», как это в вашем примере. Вы могли бы использовать это регулярное выражение:

regex = "::(.*):"; 

Это в основном говорит: Дай мне все, что начинается с «::» и заканчивается «:», но без тех, начальных и конечных символов.

+0

Что делать, если строка': somelongstring :: 123abc: 123abc: '? Мы хотим сопоставить один' 123abc' или оба? (Ваше регулярное выражение будет соответствовать обоим.) –

+0

@ JoeC Вы, безусловно, правы. Мое регулярное выражение будет соответствовать (123abc: 123abc), и это потому, что регулярное выражение является «жадным», и оно будет пытаться соответствовать m uch текст, насколько это возможно. Ну, теперь проблема определения того, что именно мы хотим сопоставить, но я понимаю вашу точку зрения. –