如何解决sed和regex规则替换文本
我有以下文字:
在做任何事情之前,必须先初始化诅咒。这是通过 调用:func:`〜curses.initscr`函数,该函数将确定 终端类型,将任何所需的设置代码发送到终端,以及 创建各种内部数据结构。如果成功 :func:`initscr`返回代表整个窗口的窗口对象 屏幕;通常在名称之后称为“ stdscr” 相应的C变量。
我要替换:
:func:`〜curses。 initscr `
具有:
`initscr https://docs.python.org/3/library/curses.html#curses.initscr`_
我尝试了以下sed规则:
's@ :func:`~curses\.\(.*\)`@ `\1 <https://docs.python.org/3/library/curses.html#curses.\1>`_ @g'
但结果如下:
在做任何事情之前,必须先初始化诅咒。这是通过 调用`initscr`函数,它将确定终端 键入,将任何所需的设置代码发送到终端,然后创建 各种内部数据结构。如果成功,则执行initscr 返回代表整个屏幕的窗口对象;这是 通常称为``stdscr`
`_ 在相应的C变量的名称之后。 ::
解决方法
使用
sed -E 's@ :func:`~curses\.([^`]+)`@ `\1 <https://docs.python.org/3/library/curses.html#curses.\1>`_ @g' file
请参见demo
EXPLANATION
NODE EXPLANATION
--------------------------------------------------------------------------------
:func:`~curses ' :func:`~curses'
--------------------------------------------------------------------------------
\. '.'
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
[^`]+ any character except: '`' (1 or more
times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
` '`'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。