小编dar*_*riq的帖子

我如何捕获逃脱的"但不是未转义的"?

假设需要由正则表达式捕获的部分由以下字符串中的PORTION指示

,"PORTION","","a",["some_string"]  
Run Code Online (Sandbox Code Playgroud)

PORTION的例子是

  • \"ABC123
  • ABC123 \"
  • \ "ABC123 \"
  • ABC\"123 \"
  • ABC123

所以字符串实际上看起来像

  • , "\" ABC123" , "", "一个",[ "some_string"]
  • ,"abc123 \"","","a",["some_string"]
  • "\" ABC123\"", "", "一个",[ "some_string"]
  • "ABC \" 123\"", "", "一个",[ "some_string"]
  • "ABC123", "", "一个",[ "some_string"]

PORTION被双引号括起来.PORTION中的双引号由反斜杠转义.我目前的模式是

my $pattern = '(.?([\\"]|[^"][^,][^"])*)';
Run Code Online (Sandbox Code Playgroud)

它产生上述例子的结果如下

  • \ "ABC123", "", "一"
  • ABC123
  • \"ABC12
  • ABC\"123 \""
  • ABC123"

该模式试图匹配不是","的序列前面的所有内容,
并且还允许捕获"
但是它没有按预期工作.我怎样才能使它工作?

regex perl

2
推荐指数
1
解决办法
356
查看次数

标签 统计

perl ×1

regex ×1