【问题标题】:Return substrings of a certain length containing the letter k返回包含字母 k 的一定长度的子串
【发布时间】:2013-03-19 07:49:33
【问题描述】:

我必须遍历文本文件并返回在文本中找到的 8 或 9 个字符长并包含字母“k”的子字符串。必须找到的子字符串的一些示例:1998k1748、1999k426、2003k3429、2012k325 等。这种搜索的正则表达式是什么?我正在使用 PHP。

任何帮助将不胜感激。

这是我用了Chirag的表达后的样子:

error_reporting(E_ALL);

shell_exec('D:\wamp\bin\xpdf\bin32\pdftotext.exe d.pdf x.txt'); 

$mypdf = file_get_contents("x.txt");

preg_match('\d{4}k\d{3,4}', $mypdf, $result);

echo $result[0];

但我收到以下错误:警告:preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in D:\wamp\www\pdf2text.php on line 8

【问题讨论】:

  • 仅是 (4-digit number)k(3-or-4-digit-number) 形式的子字符串
  • @RedBaron:是的,它只是你描述的那种形式。这是必须循环的文本示例:“verskaf deur die NASIONALE AFRIKAANSE LETTERKUNDIGE MUSEUM en NAVORSINGSENTRUM (NALN) 1998k1748 NASIONALE AFRIKAANSE LETTERKUNDIGE MUSEUM EN NAVORSINGSENTRUM(NALN) Bron: Breytenbach, Breyten Boklied (toneelstuk)”
  • Chirag64 为您解答

标签: php regex


【解决方案1】:

如果字符串始终采用 RedBaron 所述的 (4-digit-number)k(3-or-4-digit-number) 形式,则此正则表达式将起作用:

\d{4}k\d{3,4}

【讨论】:

  • 谢谢 Chirag,我会试一试的。我对正则表达式很陌生。赞赏。
  • 我在尝试你的表达后得到一个错误。我已经用结果更新了我原来的问题。
  • 啊,明白了!我没有正确使用分隔符。谢谢,它就像一个魅力。
【解决方案2】:

if else 怎么样

if ((strlen($string) ==8 || strlen($string) ==9 ) && strpos($string, 'k') ) {
//do somethig
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    相关资源
    最近更新 更多