У меня есть строка, которая не может содержать ни одного, ни одного, ни двух значений.В случае, если есть два значения, они разделяются двоеточием :
, также, если первое значение должно быть пустым, второе (единственное значение) будет начинаться с двоеточия.
Первое значение может быть составленопрактически любых буквенно-цифровых и специальных символов, второе значение только буквенно-цифровых символов.Поэтому двоеточие не является отдельным разделителем.
Я пробовал некоторые регулярные выражения, большинство из них работают нормально только для одного значения или двух значений без двоеточия в первом, но если первое пустое, регулярное выражение возвращаетвся строка в качестве первого значения.
Мой фактический код выглядит следующим образом:
if ($string =~ m/^(.+)(\:(\w+)|)$/){
$value1 = $1 || '';
if ($3){$value2 = $3}
}
Этот работает для пустой строки, только первое значение, два значения без двоеточия в первом значении.
Редактировать :
Строка может быть:
Hello World!
(только одно значение: value1 = 'Hello World!') This is a test:123
(два значения: value1 = 'Это тест' value2 = '123') :Banana
(только одно значение: value2 = 'Banana') T3-76:
(только одно значение: value1 = 'T3-76:') Book:Title:Mysql
(два значения: value1 = 'Book: Title' value2 = 'Mysql')
Основная проблема заключается в том, как сделать разницу между строкой с одним значением, которая включает двоеточие и , после некоторого текста после двоеточия и строкой с двумя значениями без двоеточия в первом значении.Я, вероятно, должен предположить, что в этом случае это строка из двух значений.
Edit2
Если это облегчает, код можно изменить на , а не соответствует пустой строке.
У кого-нибудь есть идеи?