在包含连接字符的消息中提取字符串

时间:2014-04-24 09:49:34

标签: java regex pattern-matching

我正在尝试从以下类型的字符串中提取消息,

Error_Message('The value 1,2 and 3 that you have entered is invalid.');

使用以下正则表达式

\s*(\w+):\s*(?:'\s*(?:\|\S*)'\s*|[^'])+

Could be tested here

但问题是在某些情况下失败,例如,

General_Message('Sample message value :p you have '||CHAR(10)||'entered is invalid.', FunctionY('xyz', param2) );

General_Message(' The percent may not be negative.',FunctionZ('xyz', parameter2));

需要你们的支持来解决这个问题。

提前致谢!

2 个答案:

答案 0 :(得分:1)

我认为你需要这个:

(?<=General_Message\()'[^.]+

演示:http://regex101.com/r/fF0iV1

答案 1 :(得分:0)

在开放式括号之前它始终是消息吗?如果是的话:

(?<=Message\()'[^.]+

如果不是:

^.*?('[^']+')

和第一个捕获组,请参阅here

编辑:对于整个信息:

^.*?('[^.]*.')

例如,请参阅here