【发布时间】:2020-01-10 00:28:26
【问题描述】:
我正在尝试使用正则表达式处理一些字符串情况:
(.*note(?:'|")?\s*=>\s*)("|')?(.*?)\2(.*)
字符串:
- note => “这里是注释”,
- note => '注意在这里',
- 注 => $注,
- note => "$note",
- note => '$note',
- note => '$note'
- 注 => $注。 $note2(可以更长,认为它是 perl 哈希的键值)
- # note => '$note',
开始/结束/中间可以有多个空格。我需要捕获"(或')、$note、, 或note_section 之后剩下的任何内容。如果此行是注释,则开头可以有#,因此,我在开头包含了.*。
鉴于正则表达式在案例 3 中失败,因为 \2 为空。
编辑:
要求是我正在读取一个文件,并用一些标签替换 note 的值,比如NOTETAG,并且周围的所有其他内容保持不变,包括引号和空格。为此,
- 我们需要从头开始捕获所有内容,直到我们开始写入值
- 我们也应该捕获引号,这样我就可以准确地写回来
- 我们需要捕捉笔记的价值
- 我们也应该捕捉音符值之后的东西。
例如note => "kamal" , 将变为 note => "NOTETAG" ,(注意我们没有吃掉上次的 ,)
【问题讨论】: