Рейтинг:
21
OriginalGriff
Попробовать это:
(?<=C0230.+?R1410.+S\.05\.02)(.+:){5}(?<Country>.+)$
Затем используйте группу "страна", чтобы получить интересующие вас данные.
Ehsan Sajjad
проблема в том, что название страны может быть любым
OriginalGriff
Да - и он соответствует любому.
Или ты хочешь сказать, что это может быть где угодно?
Ehsan Sajjad
неважно, это работает для примера, опубликованного в вопросе, но на самом деле я искал что-то более общее, например, ваше регулярное выражение ищет 5 вхождений : sign, и это не будет точно 5 в каждом случае, может быть больше или меньше, но страна будет в конце.
OriginalGriff
Затем либо измените {5} на более простое "+" или "*" и попробуйте, либо лучше используйте регулярное выражение для определения строк, которые вам нужно обработать, и используйте LastIndexOf для получения окончательных данных. Чем сложнее вы создаете регулярное выражение, тем труднее его понять и изменить при изменении данных, поэтому "комбинированный" подход может создать гораздо лучший и более надежный код в долгосрочной перспективе.
Рейтинг:
18
Thomas Daniels
Если вы поставите знак доллара в конце, он вернет только последнее совпадение (потому что $
означает "конец строки" в регулярном выражении).
Когда я попробовал это сделать, оно совпало ": USA"
скорее, чем "USA"
и чтобы исправить это, вы можете добавить .*:
(обратите внимание на пробел после двоеточия) до конца строки. (?<= )
группа, а затем вы можете заменить целое .[^\d]*\b
часть за частью \w+
(\w
это "словесный символ").
Итак, все это вместе дает:
(?<=(?i)((C)0230).*((R)1410).*((S)\.05.02).*(life obligations).*: )\w+$
(Или альтернатива без регулярных выражений: проверьте, что строка содержит C0230 и все остальное, а затем разделите на
": "
и захватите последний элемент результирующего массива)
Ehsan Sajjad
я ограничен здесь только использованием регулярных выражений, ваше предложение поможет, я думаю, вы имеете в виду, что ввод $ will заставляет его просто захватить конец строки матча ?
Thomas Daniels
$
означает "конец строки", так что это будет соответствовать последовательности "словесных символов", за которой сразу же следует конец строки.
Ehsan Sajjad
хорошо, отлично, так что давайте скажем в другом примере, что у меня нет названия страны в конце, в этом случае это не сработает ?
Thomas Daniels
Да, это не сработает - я сделал это регулярное выражение специально для строк с названием страны в конце, потому что это был ваш пример.
Ehsan Sajjad
хорошо, спасибо, что снова предложили $ thing, я думаю, что это будет держать меня в движении сейчас, и ваш ответ действителен в соответствии с моей потребностью на данный момент, так что принимаю его, еще раз спасибо :)
Thomas Daniels
Всегда пожалуйста!