【问题标题】:How to extract string from java properties如何从java属性中提取字符串
【发布时间】:2014-11-25 04:57:19
【问题描述】:

这里是java属性内容

xxx_error_tx1 = This is xxxx. Johe say:
xxx_error_MapCode = xxx_error_tx1, test this function,Failed,\
               Default, Current,\
               App_Error_tx1

我需要提取字符串ID和字符串内容,可以正确提取第1行内容,但是第二行内容只提取第一个字符串xxx_error_tx1, test this function,Failed,\。字符串的其余部分无法提取。

正则表达式字符串是(?<ID>.+?)=(?<Translation>.+?)$,我知道这个正则表达式有问题,但我尝试修改为正确的模式但也许我是新手,结果仍然不能满足我的要求。

任何帮助将不胜感激。

【问题讨论】:

标签: c# regex


【解决方案1】:

好像你想要这样的东西,

(?<ID>.+?)=(?<Translation>(?:(?!\S+\s*=)[\s\S])+)

DEMO

(?:(?!\S+\s*=)[\s\S])+ 匹配一个或多个空格或非空格字符,其中不包含与此\S+\s*= 模式匹配的字符串。

【讨论】:

  • 对不起,我还有个问题,如果下一行是注释行xxx_error_MapCode = xxx_error_tx1,测试这个函数,Failed,\Default,Current,\App_Error_tx1 #报告结果会包含注释行,我可以使用 [^#] 忽略注释行,但我不知道我应该插入到哪个位置。
  • 是的,非常感谢您的帮助。
【解决方案2】:

试试这个,当值被拆分为多行但在后面的行之前停止时,它会正确包含整个值。

(?<ID>.+?)=(?<Translation>(?:.*\\\s)*.*)

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多