PHP正则表达式解析形式为{string}{string}的字符串


PHP regex to parse a string of the form {string}{string}

根据标题,我需要将形式为string_1'string_2的字符串解析为一个后面跟着反斜杠的字符串,然后是另一个具有以下要求的字符串:

  • 如果存在string_1和string_2,则将它们分解为两个内标识:string_1'string_2
  • 如果只存在字符串1,则返回它
  • 如果'string_2存在,但反斜杠后面没有任何内容,则不匹配任何内容

到目前为止,我已经想出了这个:

^(['w's]*)((?!''').*)

但是字符串1中的最后一个字符一直"泄漏"到反斜杠之前的字符串2中。

有办法解决这个问题吗?或者任何其他替代正则表达式?下面的正则表达式确实有助于解决泄漏问题,但它打破了第三个要求。

^(['w's]*).((?!''').*)

为了确保这个问题不会过于本地化,请注意,当'section{section title comes here {*}}之前有一个字符串时,这可能有助于解析latex的子集。

我认为这就是您要查找的正则表达式:

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

第一组是一个至少有1个字符的"non-''",后面跟着可选的"''"和其他任何字符。