我有一种语言,它将一个字符串定义为单引号或双引号,通过加倍将字符串转义为字符串中的分隔符.例如,所有以下内容都是合法字符串:

'This isn''t easy to parse.'

'Then John said,"Hello Tim!"'

"This isn't easy to parse."

"Then John said,""Hello Tim!"""

我有一个字符串(上面定义)的集合,由不包含引号的东西分隔.我正在尝试使用正则表达式,是解析列表中的每个字符串.例如,这里是一个输入:

“Some String #1” OR ‘Some String #2’ AND “Some ‘String’ #3” XOR

‘Some “String” #4’ HOWDY “Some “”String”” #5″ FOO ‘Some ”String” #6’

用于确定字符串是否具有这种形式的正则表达式是微不足道的:

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

运行上面的表达式来测试它是否是一个这样的形式,我需要另一个正则表达式从输入中获取每个分隔的字符串.我打算这样做:

Pattern pattern = Pattern.compile("What REGEX goes here?");

Matcher matcher = pattern.matcher(inputString);

int startIndex = 0;

while (matcher.find(startIndex))

{

String quote = matcher.group(1);

String quotedString = matcher.group(2);

...

startIndex = matcher.end();

}

我想要一个正则表达式捕获组#1中的引号字符,组#2中的引号内的文本(我正在使用Java Regex).所以,对于上面的输入,我正在寻找一个正则表达式,在每个循环迭代中产生以下输出:

Loop 1: matcher.group(1) = "

matcher.group(2) = Some String #1

Loop 2: matcher.group(1) = '

matcher.group(2) = Some String #2

Loop 3: matcher.group(1) = "

matcher.group(2) = Some 'String' #3

Loop 4: matcher.group(1) = '

matcher.group(2) = Some "String" #4

Loop 5: matcher.group(1) = "

matcher.group(2) = Some ""String"" #5

Loop 6: matcher.group(1) = '

matcher.group(2) = Some ''String'' #6

到目前为止我已经尝试过的模式(未转义,随后为Java代码转义):

(["'])((?:[^\1]|\1\1)*)\1

"([\"'])((?:[^\\1]|\\1\\1)*)\\1"

(?")(?(?:[^"]|"")*)"|(?')(?(?:[^']|'')*)'

"(?\")(?(?:[^\"]|\"\")*)\"|(?')(?(?:[^']|'')*)'"

当尝试编译模式时,这两个都会失败.

这样的正则表达式是否可能?

java正则表达式 引用_java – 正则表达式检索引用的字符串和引用字符相关推荐

  1. java中正则表达式函数_java正则表达式PHP中的正则表达式函数介绍

    java正则表达式PHP中的正则表达式函数介绍 正则表达式(Regular Expression) 正则表达式系统: 1.POSIX 2.Perl PHP中使用的regex是PCRE: NOTE:PC ...

  2. java正则表达式对象_Java正则表达式之Pattern类

    java.util.regex.Pattern类指正则表达式的编译表示形式.即将你的正则表达式字符串编译成java正则表达式对象.所有的正则表达式字符串在使用前都必须先编译成Pattern类的实例.然 ...

  3. java 表达式写法_java正则表达式的写法

    展开全部 方法/步骤 Java正则表达式正则表达式的语法知识:Java支持Perl 5 正则表达式语法的一个子集.e69da5e6ba903231313335323631343130323136353 ...

  4. java正则表达式教程_Java正则表达式教程及示例

    [感谢 @CuGBabyBeaR 的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试投递到 ImportNew.] 当我开始我的Java职业生涯的时候,对于我来说正则表达式简直是个是梦魇.本教程旨 ...

  5. java正则表达式原理_Java 正则表达式详解

    摘自:http://www.jb51.net/article/16829.htm 许多语言,包括 Perl.PHP.Python.JavaScript和JScript,都支持用正则表达式处理文本,一些 ...

  6. java 正则表达式过滤_java正则表达式过滤特殊字符

    Java用正则表达式 过滤特殊字符,只允许中文.字母Java用正则表达式 过滤特殊字符,只允许中文.字母或数字,该怎么写? String s1="我是正确测试数据aasdf2342343AS ...

  7. java正则表达式 中括号_Java正则表达式获取中括号之间的内容

    不包含中括号 正则表达式如下: \\[(.*?)] 注: .匹配除换行符\n之外的任何单字符: *匹配前面的子表达式零次或多次: ?匹配前面的子表达式零次或一次: ()标记一个子表达式的开始和结束位置 ...

  8. java正则转义_Java 正则表达式 转义字符

    一.这篇文章写的很好,值得看看 两个重点: 1.两次转义 (1)Java 转义(具体规则待学习) Java 中的普通字符串,需要经过 Java 的转义 (2)正则转义(具体规则待学习) Java 代码 ...

  9. java 汉字个数_java语言中如何获取字符串中汉字的个数

    java语言中如何获取字符串中汉字的个数? [实例描述] 字符串中可以包含数字,字母.汉字或者其他字符.使用Character 类的isDigit()方法可以判断字符中的某个字符是否为数字,使用Cha ...

最新文章

  1. C#:CsvReader读取.CSV文件(转换成DataTable)
  2. golang 反射_云原生的 Java与Golang
  3. ADB设置连接android真机
  4. sae项目服务器,基于SAE的游戏服务器: Server on SAE for RGSS Games 部署在SAE上的简易游戏服务器,为用 RMXP/VX/VA 开发的游戏提供网络服务...
  5. React开发(225):render中返回的值可以定义为一个方法
  6. 最优化学习笔记(一)预备知识
  7. 把txt作为数据源绑定到GridView中
  8. 最小公倍数和最大公约数的简洁写法
  9. windows安装numpy库
  10. YCOJ黑熊过河(C++)
  11. 加州房价篇 (一) : 了解数据
  12. 校园卡水卡最低成本破解具体过程(补上上次工具教程)By:dj1149 -02
  13. 高效率科研神器——小软件、大能量
  14. java从入门到精通----mysql05
  15. 360视频:CMP和ACP投影
  16. Chrome浏览器安装本地插件
  17. Unity 摄像头实时扫描二维码
  18. 系统盘的制作和安装系统的操作流程
  19. 房屋价格预测相关公开数据集
  20. 单片机设计 测量频率

热门文章

  1. linux内核分析期末,Linux内核分析作业
  2. 1339: 考试排名
  3. ​Spring事务的传播行为案例分析
  4. 雨中冒险:难度随时间增高的设计
  5. 游戏运营期间我的项目开发经验总结——纪律性和卡顿处理
  6. 如何突破瓶颈又释放工作量? 深度剖析《闪耀暖暖》游戏从2D到3D的美术开发过程
  7. 防范sql注入式攻击(Java字符串校验,高可用性)
  8. MySQL sysdate()函数 不走索引的问题
  9. centos7安装sftp服务器
  10. mysql堵塞 sending data和sort状态多,cpu高