【问题标题】:Trying to regex for strings longer than 22 characters尝试对超过 22 个字符的字符串进行正则表达式
【发布时间】:2011-01-19 12:22:55
【问题描述】:

我有一个很长的数据数组,我需要快速浏览它并确保所有名称都不超过 22 个字符。我知道我可以在显示端截断它,但我宁愿用适当的解决方案来解决这个问题,只是删除它们:)

这是我的示例

$profiles[257] = array('name'=>'FedupKissingFrogs', 'age'=>27, 'sex'=>'F', 'location'=>'XXXXXXXXXX');
$profiles[260] = array('name'=>'Lil_Greta_90', 'age'=>20, 'sex'=>'F', 'location'=>'XXXXXXXXXX');
$profiles[262] = array('name'=>'lOOkfOrme86', 'age'=>24, 'sex'=>'F', 'location'=>'XXXXXXXXXX');
$profiles[259] = array('name'=>'youvefoundME', 'age'=>21, 'sex'=>'F', 'location'=>'XXXXXXXXXX');

这是我到目前为止提出的正则表达式,它似乎根本不起作用

'[A-Za-z]{20,40}'

我的计划是我可以使用正则表达式来标记这些行,然后我可以从我的 IDE 中删除它们。不允许编程;)

-- 编辑--

感谢所有回复!这背后的想法是一种快速且自动化的方法,只需扫描包含数组的平面 PHP 文件,以查看是否所有短于 22 个字符的名称,因为长于该名称的名称会破坏布局,我被要求删除它们。我只想在我的 IDE 中搜索并删除这些行。

匹配字符并不重要,任何字符都是允许的,甚至是空格,\ / ~ 和 * 等。我正在寻找更多匹配字符串的长度,但包含在 =>'$name' 容器中。

【问题讨论】:

  • 您使用什么语言/框架?肯定有一些内置的东西可以让你在不使用正则表达式的情况下测试字符串的长度?
  • @Luke:这似乎不仅仅是字符串长度问题。
  • 如果你想要长度为<= 22 的字符串,为什么要{20,40}
  • @SilentGhost:问题是 “确保所有名称都不超过 22 个字符” 这听起来像是字符串长度问题,尽管问题是有点模糊。大卫应该澄清要求。
  • @Luke:是的,正则表达式显示 OP 正在检查特定字符。

标签: regex


【解决方案1】:

这将匹配“至少 22 个任意字符”

.{22,}

【讨论】:

  • 因此,只要文件长度为 22 个字符或更长,那么这将匹配...整个文件。
  • 为什么?你试过这个吗?它应该逐行匹配
  • +1 与 Lazarus 的解决方案相反,这很好用。
  • 这将是最好的答案
【解决方案2】:

正则表达式是:

/'name'=>'[^']{23,}?'/i

这将匹配任何“名称”为 23 个字符或更长的行。

【讨论】:

  • 宾果游戏!谢谢,我会把它保存在一个特别的地方以备将来使用:)
【解决方案3】:

我无法抗拒使用好的 ol'strlen

foreach ($profiles as $id => $data) {
    if (strlen($data['name']) >= 22)
        unset($profiles[$id]);
}

【讨论】:

  • 我没有处理文件,它是平面的。因此,无法使用 PHP 解析数组。我正在寻找一个正则表达式解决方案,以允许我在未来应用类似的技术:)
  • 正则表达式是更好的方法而不是函数
  • 正则表达式是更好的方法而不是函数
【解决方案4】:

此正则表达式将匹配长度超过 22 个字符的字符串

/.{23,}/

【讨论】:

  • 因此,只要文件长度为 22 个字符或更长,那么这将匹配...整个文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
  • 2012-10-13
相关资源
最近更新 更多