Регулярное выражение для получения одного поля из строки с постоянным разделителем - PullRequest
1 голос
/ 03 февраля 2009

Что такое регулярное выражение для

initSock|north|router\r\n

Там, где есть север постоянно меняется, но остальное всегда одинаково. Так может быть:

initSock|foo|router\r\n
initSock|bar|router\r\n

и т.д.

Но где север , foo или bar , где определенно должно быть что-то и оно не может быть пустым Я собираюсь использовать это в C #.

Чтобы сделать это более понятным: Любая вещь, которая выглядит так, плоха:

initSock||router\r\n
initSockfoorouter\r\n
|foo|router\r\n
initSock|foo|router
initSock|foo|portal\r\n
outSock|foo|router\r\n

Ответы [ 2 ]

7 голосов
/ 03 февраля 2009
"^initSock\|([a-zA-Z]+)\|router\\r\\n$"

Хотя я, вероятно, испытал бы искушение разделить символ канала ("|") ...

4 голосов
/ 03 февраля 2009

Чтобы расширить приведенный выше ответ от M Potato Head, чтобы учесть все возможные символы, я бы переписал регулярное выражение как:

"^initSock\|[^|]+\|router\\r\\n$"

или

"^initSock\|[^|][^|]*\|router\\r\\n$"

, если вы не можете использовать расширенное регулярное выражение. Таким образом, вам не нужно гарантировать, что вы допустили все возможные символы в наборе символов, которые вы используете, чтобы соответствовать изменяющейся части имени.

НТН

ура

Rob

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...