2015-05-03 4 views
0

При возврате значения строки из входящего запроса в мое приложение на основе сети, у меня есть строка, как этот 'post http://a.com\r\nHost: a.com\r\n'Использование регулярных выражений для поиска символов в строке и заменить

Проблема в том, что хозяин постоянно меняется, так что я необходимо заменить его на определенный хост. Для этого я попытался использовать регулярное выражение, но застрял, пытаясь найти в строке строки 'host:a.com' и заменить его на определенную сумму.

Я попытался использовать этот пример www.javamex.com/tutorials/regular_expressions/search_replace_loop.shtml#.VUWvt541jqB, сменяя шаблон на: ([\\d]+), но он по-прежнему остается неизменным.

Моя цель - заменить заданные символы в строке с заданным значением и вернуть новую строку с заданным значением. Любые указатели?

EDIT: Пример типичного входящего запроса: Post http://example.com\r\nHost: example.com\r\nConnection: close\r\n

Другой входящий запрос может принять такую ​​форму: GET http://example2.net\r\nContent-Length: 2\r\nConnection: close\r\nHost: example2.net\r\n

Я хочу, чтобы заменить его на это образует Post http://example.com\r\nHost: mycustomhostvalue.com\r\nConnection: close\r\n

GET http://example2.net\r\nContent-Length: 2\r\nConnection: close\r\nHost: mycustomhostvalue.com\r\n

+3

Пробовали ли вы один из 'myStr.replace ("SomeString", "someOther") ; 'или' replaceAll ("someRegex", "someString"); '? – Maroun

ответ

1

Используйте регулярное выражение, чтобы заменить его, как это:

content = content.replaceAll("Host:\\s*(\\w)*\\.\\w*", "Host: newhost.com") 

Это заменит что-нибудь после того, как Host: с newHost.com.

Примечание: в соответствии с замечанием cfqueryparam, вы можете USEA регулярное выражение, как это, чтобы покрыть .co.uk и такие:

Host:\\s*.*?(?=\\\\r\\\\n) 
+0

Обычно я не знаю значения хоста, поскольку они различаются с каждым входящим запросом. Так что замените («Я думаю, не будет работать – codeFreak

+0

@codeFreak, если вы хотите сделать это с помощью регулярного выражения, вы должны знать, что хотите заменить. Возможно, вы можете показать некоторые обилие ваших входных данных и haw, которые вы хотите получить имена хостов от него. – JonasCz

+0

Добавили примеры в исходное сообщение @JonasCz – codeFreak