0

我正在尝试使用正则表达式来删除单词中的“-”字符。我知道如何通过 找到它们,[A-z]-[A-z]但我如何只删除“-”?更详细地说,我使用 Calibre 将 PDF 转换为 EPUB,它的工作比我预期的要好得多,现在的问题是页面之间中断的单词有这个烦人的“-”。

谢谢

4

2 回答 2

0

/(?<=\p{L})-(?=\p{L})/(or /(?<=[[:alpha:]])-(?=[[:alpha:]])/) 将匹配两个 Unicode 大写或小写字母之间的连字符。(?<=\p{L})积极的回顾(?<\p{L})是一个积极的前瞻。对于英文文本,你也可以写/(?<=[a-z])-(?=[1-z])/,只要不写"She was blas-é about it"

在红宝石中,

"She- wa-s blas-é about it".gsub(/(?<=\p{L})-(?=\p{L})/, '')
  #=> "She- was blasé about it"

"He double-downed--shall we say--on his efforts".
  gsub(/(?<=\p{L})-(?=\p{L})/, '')
  #=> "He doubledowned--shall we say--on his efforts"
于 2020-02-08T21:27:54.247 回答
-1

正则表达式本身不会处理替换,只会识别匹配项。正则表达式的语言实现具有替换功能。

在 JavaScript 中,您可以使用 String.replace 和正则表达式捕获组来删除 - 从这样的单词中:

'This is anno-ying. This is also anno-ying'.replace(/(\w)-(\w)/g, function (m, p1, p2) { return p1+p2 })

返回

'This is annoying. This is also annoying'

如果破折号出现在两个单词字符附近(由正则表达式定义),这只会替换破折号。

于 2020-02-08T20:12:30.823 回答