我正在尝试将词典文本文件(使用Sublime文本编辑器)骰子化,并且需要在最后)
之后首次出现空格,因为我需要用可以导入的分隔符替换它进入Google表格。
例如,以下内容:
abierto (masculine) open
abjaso (masculine); abjasio (masculine) Abkhaz
abogado (masculine); abogada (feminine); notario (masculine) lawyer
应该是(注意_
分隔符):
abierto (masculine)_ open
abjaso (masculine); abjasio (masculine)_ Abkhaz
abogado (masculine); abogada (feminine); notario (masculine)_ lawyer
我该如何做到这一点?
编辑:我已尝试/\)[^\)]+$/g
- 在字符串的末尾获得一个)
后跟一个或多个非)字符,贪婪..但它只能找到一个结果。
答案 0 :(得分:1)
您可以使用
\)(?!.*\))
查找)
的最后一次出现,然后将其替换为)_
,这会为您提供所需的结果。这是ST3的结果
说明:
\) # find ")"
( # OPEN capturing group 1
?! # negative lookahead, aka "do not match"
.* # anything until
\) # character ")"
) # CLOSE capturing group 1
因此,如果你有例如正则表达式a(?!b)
并在“ab”,“ac”和“ad”上测试它,如果它在“不匹配的东西之前,它将仅匹配”a“ “b。所以“ac”和“ad”中的“a”在这里匹配。但不是“ab”。在)
)
来自评论:
你能帮忙解释一下吗?另外,你能解释为什么这在Regex101中不起作用吗? regex101.com/r/GFwrn5/1
那是因为你没有在那里启用全局/g
标志。如果你启用它,它将完成这项工作。
答案 1 :(得分:0)
您可以使用贪婪匹配<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
来使用此正则表达式匹配最后.*\)
:
)
然后将其替换为:
/(.*\)) /
$1_\t
用于标签的位置(您可以选择4个空格而不是\t
。