Вот таким вот:
(?:(\s+)|(/\*[\s\S]*?(?:\*/|$))|(//[^\r\n]*(?:\r\n?|\n|$))|('(?:[^\\'\r\n]++|\\.)*(?:'|$))|("(?:[^\\"\r\n]++|\\.)*(?:"|$))|((?<=[!%&(*+,./:;<=>?\[{^|}~-]\s{0,16})/(?:[^\\\/\r\n]|\\.)*/\w*)|([!%&()*+,./:;<=>?\[\]{^|}~-])|(\b(?>with|while|volatile|void|var|typeof|try|true|transient|throws|throw|this|synchronized|switch|super|static|
(
Read more... )
Comments 6
А можешь привести пример использования регэкспа - в смысле кода? Т.е. как подсветка делается?
Reply
Обвязочный код выглядит примерно вот так:
public static class RegExSplitter extends Splitter
{
private final Pattern regex;
private final int[] groupTypes;
private final boolean merge;
public RegExSplitter(String regex, int[] groupTypes, boolean merge)
{
this.regex = Pattern.compile(regex);
this.groupTypes = groupTypes;
this.merge = merge;
}
public List/**/ split(String value)
{
ElemMergeHelper helper = new ElemMergeHelper(value, merge);
Matcher matcher = regex.matcher(value);
for (int i = 0, len = len(value); i < len; i = matcher.end())
{
if (!matcher.find(i) || matcher.start() > i || matcher.end() <= i)
{
helper.add(NONE, i, len);
break;
}
for (int j = matcher.groupCount(); j > 0; j--)
{
if (matcher.end(j) <= i) continue helper.add( ( ... )
Reply
void f()
{
/*
'Hello'
*/
}
Содержимое комментария также будет подсвечено как строка?
Reply
Исправил на '[\s\S]'.
Reply
(The comment has been removed)
Reply
Leave a comment