删除括号之间的文本,但仅在给定条件下
Removing text between parentheses but only at given conditions
我有下面这句话:
敏捷的棕色狐狸跳过懒惰的狗(见第一册)。敏捷的棕色狐狸跳过懒惰的狗(见上文)。敏捷的棕色狐狸跳过懒惰的狗 (见第 2 册)。敏捷的棕色狐狸跳过懒惰的狗(见第 3 册)。
在以下情况下,我需要删除句子中括号之间的文本 - 括号和外部空格包括在内:
- 括号内的文字包含 Book;
- 括号内的文字没有放在句末。
所以那句话应该变成:
敏捷的棕色狐狸跳过懒惰的狗。敏捷的棕色狐狸跳过懒惰的狗(见上文)。敏捷的棕色狐狸跳过了懒狗。敏捷的棕色狐狸跳过懒惰的狗(见第 3 册)。
我知道这个正则表达式 sentence.replace(/ *\([^)]*\) */g, "");
- 但我不知道如何应用上述条件。
在此,希望对您有所帮助
const sentence = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit (see the Book "abc"). Quisque non ante nisi (see the Book "def"). Nam id justo velit (see above). Donec hendrerit dui sit amet tempus molestie (see the Book "ghi").'
console.log(sentence.replace(/\s?\([\w\s\"]*?Book[\w\s\"]*?\)\s?(?=..*\w)/gm, ''));
在这里你可以看到正则表达式的解释和实验 - https://regex101.com/r/hOZg0g/5
另一个正则表达式:
const regex = /\s\([^)]*?Book.*?\)(?=.*\(.*?Book.*?\))/g
以JS形式举例:
const p = 'Text (see the Book "def"). Text (see above). Text (Book 2) with more text (Book 3).';
console.log(p.replace(regex, ''));
我有下面这句话:
敏捷的棕色狐狸跳过懒惰的狗(见第一册)。敏捷的棕色狐狸跳过懒惰的狗(见上文)。敏捷的棕色狐狸跳过懒惰的狗 (见第 2 册)。敏捷的棕色狐狸跳过懒惰的狗(见第 3 册)。
在以下情况下,我需要删除句子中括号之间的文本 - 括号和外部空格包括在内:
- 括号内的文字包含 Book;
- 括号内的文字没有放在句末。
所以那句话应该变成:
敏捷的棕色狐狸跳过懒惰的狗。敏捷的棕色狐狸跳过懒惰的狗(见上文)。敏捷的棕色狐狸跳过了懒狗。敏捷的棕色狐狸跳过懒惰的狗(见第 3 册)。
我知道这个正则表达式 sentence.replace(/ *\([^)]*\) */g, "");
- 但我不知道如何应用上述条件。
在此,希望对您有所帮助
const sentence = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit (see the Book "abc"). Quisque non ante nisi (see the Book "def"). Nam id justo velit (see above). Donec hendrerit dui sit amet tempus molestie (see the Book "ghi").'
console.log(sentence.replace(/\s?\([\w\s\"]*?Book[\w\s\"]*?\)\s?(?=..*\w)/gm, ''));
在这里你可以看到正则表达式的解释和实验 - https://regex101.com/r/hOZg0g/5
另一个正则表达式:
const regex = /\s\([^)]*?Book.*?\)(?=.*\(.*?Book.*?\))/g
以JS形式举例:
const p = 'Text (see the Book "def"). Text (see above). Text (Book 2) with more text (Book 3).';
console.log(p.replace(regex, ''));