Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 从开始匹配子字符串,该子字符串必须以特定字符串结尾,并且具有特定的最大长度_Regex - Fatal编程技术网

Regex 从开始匹配子字符串,该子字符串必须以特定字符串结尾,并且具有特定的最大长度

Regex 从开始匹配子字符串,该子字符串必须以特定字符串结尾,并且具有特定的最大长度,regex,Regex,让我们假设一个有效字符串由一些句子组成,最大长度为10。一个句子以一个点和至少一个空格字符结尾 lol.omg rofl.=>lol. lol.omg。rofl.=>lol.omg. lol.=>lol. lol omg rofl.=>不匹配 有什么想法吗 /^.{,8}\. / 说明: ^匹配字符串的开头 {,8}最多匹配8个字符(10个指定的2个字符) \。匹配文字点和空格 编辑:哦,我错过了包含至少1个空格的句子。嗯,让我想想 通过观察,我认为以下方法可能有效: /^(?!.{11,

让我们假设一个有效字符串由一些句子组成,最大长度为10。一个句子以一个点和至少一个空格字符结尾

lol.omg rofl.
=>
lol.

lol.omg。rofl.
=>
lol.omg.

lol.
=>
lol.

lol omg rofl.
=>不匹配

有什么想法吗

/^.{,8}\. /
说明:

  • ^
    匹配字符串的开头
  • {,8}
    最多匹配8个字符(10个指定的2个字符)
  • \。
    匹配文字点和空格
编辑:哦,我错过了包含至少1个空格的句子。嗯,让我想想

通过观察,我认为以下方法可能有效:

/^(?!.{11,}).* .*\. /
  • ^
    字符串的开头
  • (?!.{11,})
    长度超过10的排除字符串的负前瞻
  • **
    至少有一个空格的任何序列
  • \。
    文字点和空格
    • 这个怎么样?(假设您的正则表达式引擎支持look aheads)

      看到了吗

      将字符串开头的0到0个字符与
      作为最后一个字符进行匹配,并且需要在点后面加空格或行/字符串的结尾

      我假设点后的空格不计入句子长度


      (?=|$)
      是一个正向前瞻,它确保空格或行/字符串的结尾在后面,但不匹配。

      “lol.”=>“lol.”点后没有空格。为什么这个匹配?是一个很好的结束空格的方法,但是你没有像我第一次那样检查句子本身的空格。我会将此合并到我的(带有源代码声明)中,如果这符合Leif的需要(不清楚ATM),则更新您的投票。@halo我在问题中没有看到此要求。否则
      lol.=>lol.
      不应匹配,但必须匹配。一个真正的句子包含空格,但我不必检查。我完善了你的第一个版本,它的作品,谢谢!
      ^.{0,9}\.(?= |$)