如何添加空格和标点符号以使用正则表达式捕获第一组?如何在 LibreOffice 中停止某些选项卡分为两列?

Posted

技术标签:

【中文标题】如何添加空格和标点符号以使用正则表达式捕获第一组?如何在 LibreOffice 中停止某些选项卡分为两列?【英文标题】:How to add whitespace & punctuation marks to capture first group with regex? How to stop certain tabs dividing into two columns within LibreOffice? 【发布时间】:2017-12-23 20:53:17 【问题描述】:

谁能帮帮我。一直试图让这个正则表达式工作,它几乎就在那里。他们似乎都是正确的,但第一个应该是:

单词:el,la 性别:艺术 word_zh: (+m, f)

第一个测试字符串是:

1

el, la art the (+m, f)
• el diccionario tenía también frases útiles – the dictionary also had
useful phrases
2055835 | 201481381

另一个问题是我一直在尝试简单地复制信息。从“替换”部分到 LibreOffice。我要做的就是为数据创建 6 列。问题是第 6 列 (sent_en) 有时会在“G”列和“A”列之间进行划分,而不是 sent_en 的所有数据都在“G”列中。如果您将“替换”下方的数据复制到 LibreOffice Calc 中,您会更好地理解我的意思。我只是无法弄清楚这一点,如果有人可以帮助我,我将非常感激。谢谢。

这是链接https://regex101.com/r/m3yySN/2/

^

(?<frequency>[0-9]+) \W+
(?<word>\pL+\W?) \h+
(?<gender> [\pL()]+ (?:, \h* [\pL()]+)* ) \h+
(?<word_en> [^•]*[^•\s]) \h* \R

• \h*
(?<sent_esp> [^–]*[^\s–] ) \s*–\s*
(?<sent_en> .* (?:\R .*)*? ) \h* \R

(?<num1> [0-9]+) \h* \| \h*
(?<num2> .*\S)

\1\t\2\t\3\t\4\t\5\t\6\t

【问题讨论】:

您需要在实际问题中包含所有代码(复制/粘贴)。可以使用指向第三方服务的链接作为示例,但不应要求您理解该问题。如果链接更改/被删除,这个问题对未来的访问者将毫无用处。请阅读:How to create a Minimal, Complete, and Verifiable example 和 How do I ask a good question? 一个后续问题发布在ask.libreoffice.org/en/question/141538/…。 【参考方案1】:

这个有点毛,但毕竟只需要一点点调整:

^
(?<frequency>[0-9]+) \W+
(?<word>\pL+(?:,\h\pL+|\W)*) \h+
(?<gender> [\pL()]+ (?:, \h* [\pL()]+)* ) \h+
(?<word_en> [^•]*[^•\s]) \h* \R
• \h*
(?<sent_esp> [^–]*[^\s–] ) \s*–\s*
(?<sent_en> .* (?:\R .*)*? ) \h* \R
(?<num1> [0-9]+) \h* \| \h*
(?<num2> .*\S)

Results 我现在看起来不错。

【讨论】:

嘿,非常感谢。感谢您的帮助。

以上是关于如何添加空格和标点符号以使用正则表达式捕获第一组?如何在 LibreOffice 中停止某些选项卡分为两列?的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式捕获字符后的文本并以空格​​结尾[重复]

正则表达式捕获引号内和带/不带空格的数字

如何构建一个正则表达式来捕获由单个空格分隔的单词?

如何使用正则表达式 python3 替换除空格和换行符旁边的数字以外的所有其他符号

如何从正则表达式捕获组中修剪空白?

正则表达式标点符号拆分 [Python]