Получение строки между двумя строками с помощью регулярных выражений - PullRequest
0 голосов
/ 12 октября 2011

У меня длинная строка:

1;#Subject:SW|
vti_parserversion:SR|14.0.0.4762
vti_folderitemcount:IR|0
_Category:SW|
vti_author:SR|SHAREPOINT\\system
_dlc_DocIdItemGuid:SW|8435986b-4ff2-4e03-9879-d15568d88f0b
vti_approvallevel:SR|
vti_categories:VW|
vti_foldersubfolderitemcount:IR|0
vti_modifiedby:SR|SHAREPOINT\\system
vti_assignedto:SR|
Keywords:SW|
_Status:SW|
vti_cachedcustomprops:VX|vti_approvallevel vti_categories Subject vti_assignedto Keywords _Status vti_title _Author _Category _dlc_DocId _Comments _dlc_DocIdUrl _dlc_DocIdItemGuid
ContentTypeId:SW|0x01010013CD7B577B3AC84B8467BC0F2B82B30D
_dlc_DocId:SW|5VQNHKQHD5Z4-9-1
vti_cachedtitle:SR|SharePoint 2010 Deployment Guide
vti_title:SR|SharePoint 2010 Deployment Guide
_Author:SW|
_dlc_DocIdUrl:SW|http://blub.com/_layouts/DocIdRedir.aspx?ID=5VQNHKQHD5Z4-9-2, 5VQNHKQHD5Z4-9-1
_Comments:SW|


И я хочу проанализировать DocIdUrl (строку между "_dlc_DocIdUrl: SW |" и ","), я использую RegexKitLite с: String stringByMatching:regExP

Это мое первое выражение RegExpression: NSString* regExp = @"(?=\_dlc_DocIdUrl:SW|)(.*?)(?=\,)";

Но оно дает мне: _dlc_DocIdUrl: SW | http://blub.com/_layouts/DocIdRedir.aspx?ID=5VQNHKQHD5Z4-9-2

Я хочу только URL, как я могу решить, что?

Я в замешательстве!

Ответы [ 2 ]

0 голосов
/ 12 октября 2011
(?<=_dlc_DocIdUrl:SW\|)[^,]*(?=,)

это даст вам то, что вам нужно напрямую, без группировки.

0 голосов
/ 12 октября 2011

Вот регулярное выражение, решающее вашу проблему:

_dlc_DocIdUrl:SW\|(?<value>[^,]*),+

Вы найдете запрошенный URL в группе с именем "value"

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