在 Notepad++ 中是否有一个正则表达式能够将“::”右侧的内容移动到“::”左侧但没有撇号?
In Notepad++ is there a regex capable of taking what's to the right of "::" and moving it to the left of "::" but without the apostrophe?
简而言之,我有一个包含一堆英文缩写的文本文件,其中 3 个在下面,一个是在我意识到大约 80 行的难度之前完成的。
::I'd've
::I'll
::ain't
dont::don't
通常我使用 RegEx 通过 n++ 修改我的大部分文本文件,但发现在这种情况下缺少它。我基本上是想把 ::
右边的东西移到 ::
左边,然后删除撇号 '
,忽略那些已经完成的。
Idve::I'd've
Ill::I'll
aint::ain't
dont::don't
我仍处于 learning/using 正则表达式的早期阶段,我几乎无法胜任 AutoHotkey 以外的任何编程,如果你称之为真正的编程(至少在我的水平)。 regex+notepad++ 是否能够满足此请求,或者我想使用 Python 或 Bash 之类的东西来修改文本文件?
^[^:]*$
是我使用过的唯一正则表达式,我在网上找到了一个,因为我不知道如何解决 NOT :
的问题(添加 ::
到该行的开头)但在那里偶然发现仅将其应用于不包含 ::
的行。
谢谢!
如果您知道每行可以有多少个撇号的限制,您可以创建一个正则表达式来匹配行首的 ::
,然后是除换行字符之外的任意数量的字符, :
和 '
,捕获到一个组中,然后是一个 '
,并在可选的非捕获组序列中重复此子模式。然后,替换为对组的反向引用。使用 $nn
语法,您可能有多达 99 个组。
这是一个正则表达式,每行最多支持 9 个撇号:
^::([^:\r\n']+)'(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?([^:\r\n']+)?
替换为[=16=]
。
详情
^
- 行首
::
- ::
字符串
([^:\r\n']+)'
- 第 1 组 (</code>):除 <code>:
、CR、LF、'
以外的一个或多个字符,然后是 '
字符匹配
(?:([^:\r\n']+)')?
- 可选的非捕获组匹配
([^:\r\n']+)'
- 第 2 组 (</code>):除 <code>:
、CR、LF、'
之外的一个或多个字符
'
- 一个'
(?:([^:\r\n']+)')?
- 可选非捕获组中的组 3 (</code>)</li>
<li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 4 (</code>)</li>
<li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 5 (</code>)</li>
<li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 6 (</code>)</li>
<li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 7 (</code>)</li>
<li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 8 (</code>)</li>
<li><code>([^:\r\n']+)?
- 一个可选的捕获组 9 (</code>):除 <code>:
、CR、LF、'
.[=79= 之外的一个或多个字符]
注意[=48=]
指的是整个匹配值。
简而言之,我有一个包含一堆英文缩写的文本文件,其中 3 个在下面,一个是在我意识到大约 80 行的难度之前完成的。
::I'd've
::I'll
::ain't
dont::don't
通常我使用 RegEx 通过 n++ 修改我的大部分文本文件,但发现在这种情况下缺少它。我基本上是想把 ::
右边的东西移到 ::
左边,然后删除撇号 '
,忽略那些已经完成的。
Idve::I'd've
Ill::I'll
aint::ain't
dont::don't
我仍处于 learning/using 正则表达式的早期阶段,我几乎无法胜任 AutoHotkey 以外的任何编程,如果你称之为真正的编程(至少在我的水平)。 regex+notepad++ 是否能够满足此请求,或者我想使用 Python 或 Bash 之类的东西来修改文本文件?
^[^:]*$
是我使用过的唯一正则表达式,我在网上找到了一个,因为我不知道如何解决 NOT :
的问题(添加 ::
到该行的开头)但在那里偶然发现仅将其应用于不包含 ::
的行。
谢谢!
如果您知道每行可以有多少个撇号的限制,您可以创建一个正则表达式来匹配行首的 ::
,然后是除换行字符之外的任意数量的字符, :
和 '
,捕获到一个组中,然后是一个 '
,并在可选的非捕获组序列中重复此子模式。然后,替换为对组的反向引用。使用 $nn
语法,您可能有多达 99 个组。
这是一个正则表达式,每行最多支持 9 个撇号:
^::([^:\r\n']+)'(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?(?:([^:\r\n']+)')?([^:\r\n']+)?
替换为[=16=]
。
详情
^
- 行首::
-::
字符串([^:\r\n']+)'
- 第 1 组 (</code>):除 <code>:
、CR、LF、'
以外的一个或多个字符,然后是'
字符匹配(?:([^:\r\n']+)')?
- 可选的非捕获组匹配([^:\r\n']+)'
- 第 2 组 (</code>):除 <code>:
、CR、LF、'
之外的一个或多个字符
'
- 一个'
(?:([^:\r\n']+)')?
- 可选非捕获组中的组 3 (</code>)</li> <li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 4 (</code>)</li> <li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 5 (</code>)</li> <li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 6 (</code>)</li> <li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 7 (</code>)</li> <li><code>(?:([^:\r\n']+)')?
- 可选非捕获组中的组 8 (</code>)</li> <li><code>([^:\r\n']+)?
- 一个可选的捕获组 9 (</code>):除 <code>:
、CR、LF、'
.[=79= 之外的一个或多个字符]
注意[=48=]
指的是整个匹配值。