正则表达式:
/(?!\s)([^]+?)\s*((?!.+\)\s*\()\([^-].+ \d{2}\/\d{2}\/\d{4} .+\))/g
的输入
一些笔记(某些用户(SU950)16/09/2015 16:56:38)其他一些笔记(另一个>用户(AU951)16/09/2015 16:56:38)
示例说明 类型:OUTBOUND CALL BACK(用户名(UN973)18/09/2015 11:49:10)
多行注意事项
第二行笔记(USER NAME(UN973)18/09/2015 11:52:24)
新笔记。 (用户名(UN973)18/09/2015 11:55:15)
预期输出:
实际输出:
的 Regexr:
http://regexr.com/3d79o
我认为问题在于,当涉及到表达式的最后部分时,我不会尽可能少地匹配,但是,我没有成功使用+?操作
答案 0 :(得分:1)
一种简单的方法是使用以下regex
,(如果格式是固定的)
([^(]*)(\(.*?\(?.*?\).*?\))
<强> Regex Demo 强>
Javascript代码
var re = /([^(]*)(\(.*?\(?.*?\).*?\))/g;
var str = 'Some notes(SOME USER (SU950) 16/09/2015 16:56:38)Some other notes(ANOTHER > USER (AU951) 16/09/2015 16:56:38)\n\nExample Notes Type:OUTBOUND CALL BACK (USER NAME (UN973) 18/09/2015 11:49:10)\n\nsome notes on multiple lines\n\nsecond line of notes (USER NAME (UN973) 18/09/2015 11:52:24)\n\nA new note. (USER NAME (UN973) 18/09/2015 11:55:15)';
var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
print(m[0]);
print(m[1]);
print(m[2]);
}
<强> Ideone Demo 强>