2014-09-25 5 views
3

Я хотел бы преобразовать регулярное выражение в globКак преобразовать регулярное выражение в выражение extglob?

Я смотрел jakarta oro Но я не могу найти метод, который мне подходит. То, что он компилирует регулярное выражение и возвращает его глобальный эквивалент

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

Я, к сожалению, ограничен использованием JDK5.

+0

http://stackoverflow.com/questions/1247772/is-there-an-equivalent-of-java-util-regex-for-glob-type-patterns – sol4me

+2

@ sol4me Это Glob -> регулярное выражение – Rob

+0

Я не» t думаю, что glob имеет любую поддержку, например, для поиска. Так что это невозможно в общем случае. Если вам нужны детали для конкретного случая, вам придется быть более ... конкретным. –

ответ

0

extglob может соответствовать несколько регулярных выражений конструкций (pattern-list список изменений):

extglob   regex 
-------------- ----------------- 


?     [^/] 
*     [^/]* 
.     \. 
**    . 
?(pattern-list) (pattern-list)? 
*(pattern-list) (pattern-list)* 
+(pattern-list) (pattern-list)+ 
@(pattern-list) (pattern-list) 
!(pattern-list) (?!pattern-list) 

Есть некоторые вещи, которые регулярное выражение делает это не может быть сделано в extglob, насколько я знаю, тоже:

?????????????? [^abc] 
?????????????? \1 
?????????????? most look arounds 

Предполагая, что все конструкты в регулярном выражении имеет extglob эквивалентов, можно было бы преобразовать его в extglob формы. Это будет сложно, потому что регулярные выражения представлены CFG. И вы используете Java, что заставляет вас использовать злой бегство от побега \\.

Почему бы просто не использовать другую утилиту bash, которая поддерживает регулярные выражения? Мне нравится this.

Смежные вопросы