尝试使用正则表达式将复数词转换为单数词但想忽略几个词
Trying to convert plural words to singular words using regex but want to ignore a few words
我目前正在尝试替换一些复数词,例如从“birds”中删除“s”并在 bigquery 中将其替换为“bird”
但我希望他们忽略一些词,例如“less”、“james”、“this”。
我想出了这个忽略“少”但仍然屠夫詹姆斯的方法。
SELECT REGEXP_REPLACE("James likes to chase birds","([^s])s\b", "\1" )
我得到的输出是“Jame like to chase bird”,但我期望的是“James like to chase bird”
更新:
我尝试使用否定前瞻,但不幸的是,Bigquery Regex(RE2) 不支持此功能。
您可以在此处使用一个替代项,即具有两个替代项的正则表达式。在第一个备选方案中,您可以将所有异常词捕获到第 1 组中,在第二个备选方案中,使用您的正则表达式。替换将连接两个组值:
(?i)\b(less|james|this)\b|([^s])s\b
替换为</code>。参见<a href="https://regex101.com/r/3rXclD/1" rel="nofollow noreferrer">regex demo</a>。 <em>详情</em>:</p>
<ul>
<li><code>(?i)
- 不区分大小写的修饰符
\b(less|james|this)\b
- 第 1 组:less
、james
或 this
作为一个完整的词
|
- 或
([^s])
- 第 1 组:s
以外的任何字符(注意:如果您只想匹配 [=20= 以外的字母], 你可以使用 [^\W\d_s]
)
s\b
- s
在一个词的结尾。
在您的代码中,使用
SELECT REGEXP_REPLACE("James likes to chase birds", r"(?i)\b(less|james|this)\b|([^s])s\b", r"" )
我目前正在尝试替换一些复数词,例如从“birds”中删除“s”并在 bigquery 中将其替换为“bird”
但我希望他们忽略一些词,例如“less”、“james”、“this”。
我想出了这个忽略“少”但仍然屠夫詹姆斯的方法。
SELECT REGEXP_REPLACE("James likes to chase birds","([^s])s\b", "\1" )
我得到的输出是“Jame like to chase bird”,但我期望的是“James like to chase bird”
更新: 我尝试使用否定前瞻,但不幸的是,Bigquery Regex(RE2) 不支持此功能。
您可以在此处使用一个替代项,即具有两个替代项的正则表达式。在第一个备选方案中,您可以将所有异常词捕获到第 1 组中,在第二个备选方案中,使用您的正则表达式。替换将连接两个组值:
(?i)\b(less|james|this)\b|([^s])s\b
替换为</code>。参见<a href="https://regex101.com/r/3rXclD/1" rel="nofollow noreferrer">regex demo</a>。 <em>详情</em>:</p>
<ul>
<li><code>(?i)
- 不区分大小写的修饰符
\b(less|james|this)\b
- 第 1 组:less
、james
或 this
作为一个完整的词|
- 或([^s])
- 第 1 组:s
以外的任何字符(注意:如果您只想匹配 [=20= 以外的字母], 你可以使用 [^\W\d_s]
)s\b
- s
在一个词的结尾。在您的代码中,使用
SELECT REGEXP_REPLACE("James likes to chase birds", r"(?i)\b(less|james|this)\b|([^s])s\b", r"" )