在 LibreOffice Writer 中使用正则表达式将字符串附加到下一行会导致失败或完全替换
Using regex in LibreOffice Writer to appending a string to the next line results in a failure or full replacement instead
我正在尝试格式化一系列测试问题,以便在 LibreOffice Writer 的在线课程中实施。最近更改了测试问题格式,我必须在实施前将所有 500 多个问题更新到文本文件中。
目前的问题是这样的:
1. alter verb (awl-ter)
to change; become different or modified
■Example: The design of the king’s suit was altered to suit his taste.
□Note: Can be confused with altar , alter.
我们需要将格式更改为如下所示:
Word: alter verb (awl-ter)
Definition: to change, become different or modified
Example: The design of the king’s suit was altered to suit his taste.
Possible Exam Question: Can be confused with altar , alter.
我知道的正则表达式足以自动格式化大部分行,但定义行除外。我特别需要在 "Word" 行之后的行首添加单词 "Definition:",但我似乎无法弄清楚如何正确执行此操作。
我尝试使用 (\b\d+\.\s\w.*[\r\n])
可以找到每个定义组的第一行(如上所示),直到新行 / return - 但是,当尝试附加使用 Definition:
的文本,根据 Writer 的正则表达式帮助文件,该文本应保留原始发现并附加在“$1”之后的任何内容,它将替换一次并且在随后的 "replace" 点击后不再工作,或者将替换如果使用 "replace all" 按钮...
我添加了 search function highlighting the string 的屏幕截图。搜索似乎确实找到了我要查找的内容,并且会在单击 "find all".
时突出显示每组的第一行
当尝试 click "replace" more than once or click "replace all".
时,问题出现了(如上所述)
我目前不知道问题是什么/如何解决这个问题。似乎我的正则表达式以某种方式破坏了搜索查询和输出。
根据评论,将其写为答案。
对于给定的问题如何改变...
1. alter verb (awl-ter)
to change; become different or modified
■Example: The design of the king’s suit was altered to suit his taste.
□Note: Can be confused with altar , alter.
至(在第二行添加'Definition: '):
1. alter verb (awl-ter)
Definition: to change; become different or modified
■Example: The design of the king’s suit was altered to suit his taste.
□Note: Can be confused with altar , alter.
...虽然 LibreOffice Writer 的正则表达式似乎不喜欢多行匹配,但您可以使用其他编辑器,例如 VSCode...
或括号 (Google Brackets.io)...
替换前:
之后:
如果您决定使用其他编辑器,请尝试正则表达式...
(^.*?)([.|\n]+■Example:)
并替换为...
Definition:
希望对您有所帮助。
使用 LibreOffice 的方法是 AltSearch extension。它旨在处理带有换行符和段落符的正则表达式。
Search for: (\b\d+\.\s\w.*)$
Replace: \nDefinition:
然后按全部替换。
我试过时,默认选中仅当前选择,因此您可能需要取消选中它。此外,我发现 $
有效,但 \p
可用于匹配段落分隔符。
我正在尝试格式化一系列测试问题,以便在 LibreOffice Writer 的在线课程中实施。最近更改了测试问题格式,我必须在实施前将所有 500 多个问题更新到文本文件中。
目前的问题是这样的:
1. alter verb (awl-ter)
to change; become different or modified
■Example: The design of the king’s suit was altered to suit his taste.
□Note: Can be confused with altar , alter.
我们需要将格式更改为如下所示:
Word: alter verb (awl-ter)
Definition: to change, become different or modified
Example: The design of the king’s suit was altered to suit his taste.
Possible Exam Question: Can be confused with altar , alter.
我知道的正则表达式足以自动格式化大部分行,但定义行除外。我特别需要在 "Word" 行之后的行首添加单词 "Definition:",但我似乎无法弄清楚如何正确执行此操作。
我尝试使用 (\b\d+\.\s\w.*[\r\n])
可以找到每个定义组的第一行(如上所示),直到新行 / return - 但是,当尝试附加使用 Definition:
的文本,根据 Writer 的正则表达式帮助文件,该文本应保留原始发现并附加在“$1”之后的任何内容,它将替换一次并且在随后的 "replace" 点击后不再工作,或者将替换如果使用 "replace all" 按钮...
我添加了 search function highlighting the string 的屏幕截图。搜索似乎确实找到了我要查找的内容,并且会在单击 "find all".
时突出显示每组的第一行当尝试 click "replace" more than once or click "replace all".
时,问题出现了(如上所述)我目前不知道问题是什么/如何解决这个问题。似乎我的正则表达式以某种方式破坏了搜索查询和输出。
根据评论,将其写为答案。
对于给定的问题如何改变...
1. alter verb (awl-ter)
to change; become different or modified
■Example: The design of the king’s suit was altered to suit his taste.
□Note: Can be confused with altar , alter.
至(在第二行添加'Definition: '):
1. alter verb (awl-ter)
Definition: to change; become different or modified
■Example: The design of the king’s suit was altered to suit his taste.
□Note: Can be confused with altar , alter.
...虽然 LibreOffice Writer 的正则表达式似乎不喜欢多行匹配,但您可以使用其他编辑器,例如 VSCode...
或括号 (Google Brackets.io)...
替换前:
之后:
如果您决定使用其他编辑器,请尝试正则表达式...
(^.*?)([.|\n]+■Example:)
并替换为...
Definition:
希望对您有所帮助。
使用 LibreOffice 的方法是 AltSearch extension。它旨在处理带有换行符和段落符的正则表达式。
Search for: (\b\d+\.\s\w.*)$
Replace: \nDefinition:
然后按全部替换。
我试过时,默认选中仅当前选择,因此您可能需要取消选中它。此外,我发现 $
有效,但 \p
可用于匹配段落分隔符。