【问题标题】:Regular Expression, negative look behind javascript正则表达式,javascript背后的负面看法
【发布时间】:2016-05-10 06:18:59
【问题描述】:

我的问题似乎微不足道,但我似乎无法完全理解我做错了什么。我试图通过使用正则表达式来查找句点来检测句子的结尾。问题是,我只想说,在一个包含两个以上字母的单词之后出现句号,这样我就可以避免误报“St. Nicholas”。

我现在的表达是:

/\w{3,}\./g

但是,这似乎选择了整个单词,而不仅仅是句号。我做错了什么?

编辑:
我期待

"St. Kitts is really cool. Like seriously, sweet."

在“cool”和“sweet”之后返回句点,但不在“St”之后。

编辑 2:
这是在 Javascript 中,因此 (?

【问题讨论】:

  • 是的,因为它将匹配长度为 3more 的单词。您需要修改匹配条件。
  • (?<=\w{3})\. 如果句点前面有 3 个字母,则匹配。
  • 不幸的是,我在 Javascript 中执行此操作,无法进行正常的后视操作。
  • \w{3}(?=\.) 可用于匹配 3 个字母后跟一个句点。这个条件对你的目的有用吗? Demo
  • 如果可能的话,我真的只想选择时期。我正在使用它来获取一个字符串,并且只显示前 n 个句子。我通过在每个句子结尾拆分字符串,然后通过替换拆分中丢失的句点将列表中的前 n 个项目连接在一起来做到这一点。

标签: javascript regex lookbehind


【解决方案1】:

您可以使用组:

var myRegexp = \w{3,}(\.);
var match = myRegexp.exec(your string);
alert(match[1]);  // Here you should have captured the period

如果有多个句号:

match = myRegexp.exec(myString);
while (match != null) {
    // matched period: match[1]        
    match = myRegexp.exec(myString);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    相关资源
    最近更新 更多