искать последовательные элементы списка с префиксом по номеру и точке в простом тексте - PullRequest
0 голосов
/ 22 сентября 2011

Текст выглядит следующим образом:

"Beginning. 1. The container is 1.5 meters long 2. It can hold up to 2lt of fluid. 3. It 4 holes."

Не может быть точки в конце каждого элемента списка.

Как разделить этот текст на список, как показано ниже?

"Beginning."
"The container is 1.5 meters long"
"It can hold up to 2lt of fluid."
"It has 4 holes."

Другими словами, мне нужно соответствовать (\ d +) \.так что все (\ d +) являются последовательными целыми числами, так что я могу разделить и обрезать текст между ними.Это возможно с регулярным выражением?Как далеко я должен углубиться в область компьютерных наук?

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Это рабочий код c #:

string s = "Beginning. 1. The container is 1.5 meters long 2. It can hold up to 2lt of fluid. 3. It has 4 holes.";
string[] res = Regex.Split(s, @"\s*\d+\.\s+");

foreach (var r in res)
{
    Console.WriteLine(r);
}

Console.ReadLine();

Я разделен на \s*\d+\.\s+, что означает необязательный пробел, за которым следует хотя бы одна цифра, затем точка, затем хотя бы один пробел.

1 голос
/ 22 сентября 2011

Используйте

\d+\.(?!\d)

в качестве регулярного выражения для расщепления, т. Е. В PHP

$result = preg_split('/\d+\.(?!\d)/', $subject);

Отрицательный прогноз (?!\d) гарантирует, что после сопоставления точки не должно следовать ни одной цифры.

Или сделать пробелы обязательными - если это опция:

$result = preg_split('/\s+\d+\.\s+/', $subject);
...