我正在寻找匹配以下内容的方法:
测试字符串:
场景1:"验证:1:错误的地址。你想继续吗?" (不含引号)
场景2:"验证:1:付款方式错误2:信用卡号无效。" (不含引号)
场景3:"验证:1:付款类型错误2:信用卡号码无效.3:无效的到期日期。" (不含引号)
在第一个数字之前总会有Validate:,之后是带有可能的特殊字符的文本,包括"'()#,。如果在上一条消息的最后一个字符之后直接添加了多个问题。
提取
场景1:"地址错误。你想继续吗?"
场景2:"付款方式错误","信用卡号无效。"
场景3:"付款类型错误","信用卡号码无效。","无效的到期日期。"
在" ##:"之间或之后或多或少的任何事情,我想提取。我不会总是知道包含什么。我使用的是Coldfusion,它的核心是Java。但我可以在大多数语言(php,CF,c#,Java等)正则表达式之间进行转换。
我考虑过做这样的事情:
(\d+)(.)(\s+)
找到提取文本的位置,但想知道是否有人能想出一个更优雅的解决方案我会用它。
答案 0 :(得分:-1)
如果您使用的是sed
,则会执行以下操作:
sed 's/[^0-9]*[0-9]: \(.*\)/\1/' | sed 's/[0-9]//g'