当前位置: 首页 > 面试题库 >

正则表达式如何匹配所有标点符号,但排除某些条件

鲜于凯康
2023-03-14
问题内容

我可以\p{Punct}用来匹配所有标点符号(包括下划线)。

我想严格 排除 一个单词内的所有撇号。为此,我正在使用(?<=[a-zA-Z])'(?=[a-zA-Z])

但是,我不能让它们一起工作以匹配所有标点符号,但严格来说单词内的撇号除外。

我应该使用什么?

例子:

my brother's 这应该不匹配。

my brothers' 这应该匹配。

my 'brother' 这些应该匹配。


问题答案:

您可以在此处组合三个条件。

  1. 匹配除撇号外的所有标点符号'使用[\p{Punct}&&[^']]

  2. 匹配所有撇号,后面没有字母。

  3. 匹配所有不带字母的撇号。

正则表达式: [\p{Punct}&&[^']]|(?<![a-zA-Z])'|'(?![a-zA-Z])

说明:

  • [\\p{Punct}&&[^']] 在标点符号类别中排除撇号。

  • (?<![a-zA-Z])' 匹配不带字母的撇号。

  • '(?![a-zA-Z]) 匹配撇号,后面没有字母。

正则表达式小提琴



 类似资料:
  • 问题内容: 这个正则表达式模式: 产生以下结果: 如何删除“ cID =“? 谢谢 问题答案: 您可以使用lookbehind(不在Javascript中): 或者,您可以使用分组并获取第一个分组:

  • 我正在尝试制作一个正则表达式,它可以删除所有标点和空格,但保留小数点和连字号。到目前为止,我已经: 它删除所有点,包括小数点。 我如何使它区分点周围的字符或数字? 预期产出:

  • 我有这样一个文本: 我试图在c#中使用正则表达式来提取嵌套的if/eles-段。 要查找“?”,我使用了: 模式1: 找到“:”我用了: 模式2:

  • 问题内容: 我需要使用正则表达式在单词的 开头 和 结尾 处删除标点符号。似乎正则表达式将是最好的选择。我不想从“ you’re”之类的词中删除标点符号,这就是为什么我不使用.replace()的原因。 问题答案: 您不需要正则表达式即可执行此任务。使用有:

  • 我正在尝试匹配以下正则表达式: 换句话说,一个单词边界后跟上面的任何字符串(可选地跟一个句点字符),后面跟一个单词边界。 我也在regex101上尝试过这一操作,但与数仍然不匹配:https://regex101.com/r/klkmwl/1 转义符并没有什么区别,我已经尝试使用十六进制转义序列来代替和符(如本问题所建议的)。为什么这不匹配?

  • 为什么下面的正则表达式不匹配连字符(或与号、句号或逗号,尽管我暂时将它们排除在下面的字符类之外)?我在试着匹配字符串... ...(这是单词“hello”的语音表示),并且当字符串中有连字符时,匹配失败(上面列出的与数等相同)。 这种模式... ...起作用,根据regex101.com的说法,它本质上是完全相同的模式,所以我不明白为什么更长的模式不起作用。