在 Notepad++ 中使用正则表达式搜索整行并使用 ize 将单词更改为 ise
Search through whole line and change words with ize to ise using regex in Notepad++
我想搜索 line/sentence 中的所有单词并检测任何带有 ize 的单词并将其转换为 ise,但列出的某些单词除外。
查找:^(?!size)(?!resize)(?!Belize)(?!Bizet)(?!Brize)(?!Pfizer)(?!assize)(?!baize)(?!bedizen)(?!citizen)(?!denizen)(?!filesize)(?!maize)(?!prize)(?!netizen)(?!seize)(?!wizen)(?!outsize)(?!oversize)(?!misprize)(?!supersize)(?!undersize)(?!unsized)(?!upsize)([a-zA-Z-\s]+)ize
替换:ise
到目前为止,我得到的只是行中带有 ize 的第一个词,或者带有 ize 的最后一个词。
示例组织任何规模的社交活动。
组织任何规模的社交活动。
Find (?i)(?!size|resize|Belize|so&so|unsized|upsize)(?<!\w)(\w+)ize
Replace ise
按预期工作。添加了大小写问题 (?i)
正则表达式 ([a-zA-Z-\s]+)ize
中有空格标记 (\s
),因此它将匹配超出单词边界的任何内容。您可能希望使用 \w
and/or \b
来仅匹配 "ize" 所在单词中的字符。此外,您不希望 ^
位于开头,因为这将匹配字符串的开头。
可能的正则表达式:(?!....your list....)(\w+)ize
示例输入:"Organize to socialize whatever size."
找到匹配项:"Organize" 和 "socialize",但未找到 "size",请参阅 https://regex101.com/r/UIfoa8/1
之后,您可以使用替换 ise
将找到的字符串替换为捕获的组和 "ise"。
创建白名单数组
- 将排除的单词 (
whitelist
) 设为字符串数组
.split(' ')
正在搜索的文本 (searchStr
) 到数组中
- 然后
.map()
遍历数组的每个单词
- 使用
.indexOf()
比较单词与 whitelist
- 使用
.test()
to see if it's a x+"ize"
word to .replace()
- 一旦
searchArray
完成,.join()
将其转换为字符串 (resultString
)。
演示
“organize”、“mesmerized”、“socialize”、“baptize”被混入了一些白名单词的搜索字符串中
var searchStr = `organize Belize Bizet mesmerized Brize Pfizer assize baize bedizen citizen denizen filesize socialize maize prize netizen seize wizen outsize baptize`;
var whitelist = ["size", "resize", "Belize", "Bizet", "Brize", "Pfizer", "assize", "baize", "bedizen", "citizen", "denizen", "filesize", "maize", "prize", "netizen", "seize", "wizen", "outsize", "oversize", "misprize", "supersize", "undersize", "unsized", "upsize"];
var searchArray = searchStr.split(' ').map(function(word) {
var match;
if (whitelist.indexOf(word) !== -1) {
match = word;
} else if (/([a-z]+?)ize/i.test(word)) {
match = word.replace(/([a-z]+?)ize/i, 'ise');
} else {
match = word;
}
return match;
});
var resultString = searchArray.join(', ');
console.log(resultString);
我想搜索 line/sentence 中的所有单词并检测任何带有 ize 的单词并将其转换为 ise,但列出的某些单词除外。
查找:^(?!size)(?!resize)(?!Belize)(?!Bizet)(?!Brize)(?!Pfizer)(?!assize)(?!baize)(?!bedizen)(?!citizen)(?!denizen)(?!filesize)(?!maize)(?!prize)(?!netizen)(?!seize)(?!wizen)(?!outsize)(?!oversize)(?!misprize)(?!supersize)(?!undersize)(?!unsized)(?!upsize)([a-zA-Z-\s]+)ize
替换:ise
到目前为止,我得到的只是行中带有 ize 的第一个词,或者带有 ize 的最后一个词。
示例组织任何规模的社交活动。 组织任何规模的社交活动。
Find (?i)(?!size|resize|Belize|so&so|unsized|upsize)(?<!\w)(\w+)ize
Replace ise
按预期工作。添加了大小写问题 (?i)
正则表达式 ([a-zA-Z-\s]+)ize
中有空格标记 (\s
),因此它将匹配超出单词边界的任何内容。您可能希望使用 \w
and/or \b
来仅匹配 "ize" 所在单词中的字符。此外,您不希望 ^
位于开头,因为这将匹配字符串的开头。
可能的正则表达式:(?!....your list....)(\w+)ize
示例输入:"Organize to socialize whatever size."
找到匹配项:"Organize" 和 "socialize",但未找到 "size",请参阅 https://regex101.com/r/UIfoa8/1
之后,您可以使用替换 ise
将找到的字符串替换为捕获的组和 "ise"。
创建白名单数组
- 将排除的单词 (
whitelist
) 设为字符串数组 .split(' ')
正在搜索的文本 (searchStr
) 到数组中- 然后
.map()
遍历数组的每个单词- 使用
.indexOf()
比较单词与whitelist
- 使用
.test()
to see if it's ax+"ize"
word to.replace()
- 使用
- 一旦
searchArray
完成,.join()
将其转换为字符串 (resultString
)。
演示
“organize”、“mesmerized”、“socialize”、“baptize”被混入了一些白名单词的搜索字符串中
var searchStr = `organize Belize Bizet mesmerized Brize Pfizer assize baize bedizen citizen denizen filesize socialize maize prize netizen seize wizen outsize baptize`;
var whitelist = ["size", "resize", "Belize", "Bizet", "Brize", "Pfizer", "assize", "baize", "bedizen", "citizen", "denizen", "filesize", "maize", "prize", "netizen", "seize", "wizen", "outsize", "oversize", "misprize", "supersize", "undersize", "unsized", "upsize"];
var searchArray = searchStr.split(' ').map(function(word) {
var match;
if (whitelist.indexOf(word) !== -1) {
match = word;
} else if (/([a-z]+?)ize/i.test(word)) {
match = word.replace(/([a-z]+?)ize/i, 'ise');
} else {
match = word;
}
return match;
});
var resultString = searchArray.join(', ');
console.log(resultString);