2015-05-18 2 views
1

У меня есть следующий вход:Regex разделить на слова и знаки/символы

func add(var a:Int, var b:Int) -> Int 
{ 
    return a + b 
} 

Я использую этот Regex \s*\b\s* который я нашел в Интернете, который, как предполагается разделить слова и знаки/символы. Я попробовал его и разделить входной сигнал на

func 
add 
(
var 
... 

Который точно, как я хочу его работать, чтобы, пока он не найдет -> знак, где он выдает

: 
Int 
) -> 
... 

Все остальное работает нормально, но я хотел бы, чтобы он вывел

) 
- 
> 

вместо этого.

Как я могу это достичь? Заранее спасибо.

+0

Кому этот аромат вы хотите исправить? –

+1

Слово-символ '\ b' находится между символом слова' \ w' и символом не-слова '\ W'. Вы не найдете границы слова между двумя символами, отличными от слова, поэтому вам нужно быть более ясными о том, какие символы должны быть группами и которые должны быть разделены. – cmbuckley

ответ

1

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

\s*(\b|[->])\s* 
+0

Это сработало, спасибо. @cmbuckley сказал мне, что я не найду границы слова между двумя символами, отличными от слова. Это означает, что мне нужно будет добавить все символы, отличные от слов, которые могут быть размещены рядом друг с другом внутри '[]' для их разделения, правильно? – squill25

+0

Не удалит ли символы '->' из вывода? Опять же, зависит от аромата регулярного выражения. @Ignaus, пожалуйста, вы можете уточнить вопрос? Это вопрос PHP? – cmbuckley

+0

@cmbuckley Я протестировал его, и он был включен в выход – squill25

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