Быстрый ответ: измените ваш жадный захват (.*)
на не жадный - (.*?)
. Это должно сделать это.
customfield_11301(.*?)customfield_10730
В противном случае захват будет потреблять столько, сколько может, в результате чего он будет продолжаться до последнего customfield_10730
.
С уважением
Вот является некоторый синтаксический анализатор combinator библиотеками на более основных языках:
Я записал 8 длинноватых записей в блоге на одноместном синтаксическом анализаторе combinators в C# и F#; см. здесь для первого.
См. также FParsec (Парсек для F#)
Я нашел интересная статья о реализации синтаксического анализатора combinator в C#. Это также ссылки некоторые более общие статьи о предмете.
статья Wikipedia о предмете также имеет общий explaination понятия.
Chrise Дважды записал синтаксический анализатор combinator в Javascript.
Здесь ссылка на разговор (слайды и сценарий) на одноместном синтаксическом анализаторе combinators в C++.
Cay Horstmann имеет 4 combinator лекции синтаксического анализатора в Scala, с упражнениями. существует пример парсинга внешнего DSLs в Scala здесь .
В сети есть несколько замечательных статей, описывающих парсерные комбинаторы на C#, но нет сопровождаемого репозитория исходных текстов, поэтому я создал его по адресу:
http://code.google.com/p/sprache/
Кто-то, кто знает о парсерных комбинаторах, вероятно, мог бы многое сделать для их улучшения (пожалуйста, сделайте шаг вперед, если это похоже на вас :))
.Для меня эта статья была чрезвычайно полезной. Это почти языковой нейтральный. Просто кое-где ссылаются на Гофер .