C # как написать регулярное выражение - PullRequest
1 голос
/ 15 декабря 2009

Мой файл содержит определенные данные, такие как: *

/ Pages 2 0 R / Тип / Каталог / AcroForm

/ Количество 1 / Дети [3 0 R] / Тип / Страницы

/ Фильтр / FlateDecode / Длина 84

Какое регулярное выражение используется для получения этого вывода ..

Pages Type Catalog AcroForm Count Kids Type Pages Filter FlateDecode Length

Я хочу получить строку после '/' & до 2-го '/' или пробела.

Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 15 декабря 2009
class Program
{
    static void Main() 
    {
        string s = @"/Pages 2 0 R/Type /Catalog/AcroForm
/Count 1 /Kids [3 0 R]/Type /Pages
/Filter /FlateDecode/Length 84";

        var regex = new Regex(@"[\/]([^\s^\/]*)[\s]");
        foreach (Match item in regex.Matches(s))
        {
            Console.WriteLine(item.Groups[1].Value);
        }

    }
}

Примечание: не используйте регулярные выражения для разбора файлов PDF.

3 голосов
/ 15 декабря 2009
\/[^\/\s]+

\/ - косая черта (сбежала)
[^ ] - Класс символов не (^), содержащий ...
\/ - ... косая черта ...
\s - ... или пробел
+ - Один или несколько из них

1 голос
/ 15 декабря 2009

Я бы не использовал для этого регулярное выражение, я считаю, что использование строковых операций более читабельно:

string[] lines = input.split(@"\");
foreach(string line in lines)
{
    if(line.contains(" "))
    {
         // Get everything before the space
    }
    else
    {
         // Get whole string
    }
}
1 голос
/ 15 декабря 2009

Вот это для c #:

@"/([^\s/]+)"

Вы можете проверить это здесь, просто добавив между кавычками: http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

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