regex 相关问题

正则表达式提供了一种声明性语言来匹配字符串中的模式。它们通常用于字符串验证,解析和转换。由于正则表达式未完全标准化,因此具有此标记的所有问题还应包含指定适用的编程语言或工具的标记。注意:要求HTML,JSON等正则表达式往往会遇到负面反应。如果有解析器,请使用它。



我有以下测试用例:

我可以使用哪种正则表达方式通过pytest?我尝试了

回答 1 投票 0




使用TIDYR单独的更宽的正则施用字母数字字符串 我有以下数据, id

id <- c("case1", "case19", "case88", "case77") vec <- c("One_20 (19)", "tWo_20 (290)", "Three_38 (399)", NA) df <- data.frame(id, vec) > df id vec 1 case1 One_20 (19) 2 case19 tWo_20 (290) 3 case88 Three_38 (399) 4 case77 <NA> <- c("case1", "case19", "case88", "case77") vec <- c("One_20 (19)", "tWo_20 (290)", ...

回答 1 投票 0

replace(翻译)shell

我在文件名中有一个文件名列表。 dir1/file1.text dir1/dir2/file2.page 需要通过应用类似的替代来改变其扩展 声明-a ext =([text] = txt [page] = html [

回答 0 投票 0


Powershell代码返回正确的值。但是,希望通过捕获上面列出的ID标签来增强程序

夜晚。在这里堆叠溢出,Powershell和Regex新手。 下面的PowerShell代码正在返回正确的值以及一些前上下文和后上下文。 但是,我正在寻找

回答 1 投票 0

MultinilineRegex-仅更改第一匹配

带有两个列的文件看起来如下: A列A。 列b 31.03.2024 01:00 1.002 31.03.2024 03:00 2.003 31.03.2024 05:00 3.007 31.03.2024 05:00 4.985 31.03.2024 06:00 2.987 --------...

回答 1 投票 0


如何将字母数值和数值与Googlesheet的coulmn分开? 我正在使用GoogleSheet上工作,其中ID具有数字和字母数值。我希望在其他列中的数字值和单独的列中的字母值中的数值值。

我正在使用GoogleSheet上的ID,其中ID具有数字和字母数字。我想要其他列中的数字值,而单独的列中的字母值。 <... <table> <thead> <tr> <th> ID </th> <th> Amount </th> </tr> </thead> <tbody> <tr> <td> 2025010121474784006559939 </td> <td> 944.78 </td> </tr> <tr> <td> 387cd23a72c049dc81fcfdea4882c76c </td> <td> 1940 </td> </tr> <tr> <td> 2025010123331559557464480 </td> <td> 1940 </td> </tr> </tbody> </table> 使用wraprows(),split()和regexreplace(),如下:=wraprows(split(regexreplace(join("", A2:A), "<.+?>", "→"), "→ "), 2) 请参见wraprows(),split()和regexreplace()

回答 1 投票 0


术(开放)括号,但应结束括号,然后是强制性的。 我创建了一个正则表达式,该表达式允许用户在我的应用程序中制作公式。我的正则表达式很好,但是我希望用户进行打开和关闭的括号。 我的C ...

( ^[(N|R)]: //START WITH N: OR R: (?: (?: [-.0-9]+|BT|PT|PN|PR //ALLOW 48.934, BT, PT, PN OR PR ) (?: \+|\*|\-|\/ //ALLOW OPERATORS /,*,+ and - ) )+ //REPEAT x TIMES (?: [-.0-9]+|BT|PT|PN|PR //MUST END WITH 48.934, BT, PT, PN OR PR ) (?: :V //ADD MANDATORY :V ) (?: [-.0-9]+ //CLOSE REGEX WITH NUMBER ) )

回答 3 投票 0

规范表达,可选(开放)括号,但应结束括号。 我创建了一个正则表达式,该表达式允许用户在我的应用程序中制作公式。我的正则表达式很好,但是我希望用户进行打开和关闭的括号。 我的C ...

( ^[(N|R)]: //START WITH N: OR R: (?: (?: [-.0-9]+|BT|PT|PN|PR //ALLOW 48.934, BT, PT, PN OR PR ) (?: \+|\*|\-|\/ //ALLOW OPERATORS /,*,+ and - ) )+ //REPEAT x TIMES (?: [-.0-9]+|BT|PT|PN|PR //MUST END WITH 48.934, BT, PT, PN OR PR ) (?: :V //ADD MANDATORY :V ) (?: [-.0-9]+ //CLOSE REGEX WITH NUMBER ) )

回答 4 投票 0

<?php var_dump(preg_match('#^([01][0-9])|(2[0-4])(:[0-5][0-9]){1,2}$#', '14:25')); // Returns 1 (OK) var_dump(preg_match('#^([01][0-9])|(2[0-4])(:[0-5][0-9]){1,2}$#', '25:25')); // Returns 0 (OK) var_dump(preg_match('#^([01][0-9])|(2[0-4])(:[0-5][0-9]){1,2}$#', '14:2555')); // Returns 1 (instead of 0 as I would like to get) ?> 有人知道怎么了吗? 时间24小时格式的正则表达方式: ([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])? 24小时时钟格式的启动时间为0-23或00-23,然后是半结肠(:),然后按00-59遵循(可选的是半结肠(:),然后按00-59遵循)。 描述: ( # start of group #1 [01]?[0-9] # start with 0-9,1-9,00-09,10-19 | # or 2[0-3] # start with 20-23 ) # end of group #1 : # follow by a semi colon (:) [0-5][0-9] # follow by 0..5 and 0..9, which means 00 to 59 ( # start of group #2 : # follow by a semi colon (:) [0-5][0-9] # follow by 0..5 and 0..9, which means 00 to 59 ) # end of group #2 ? # optional third part 匹配时间格式: 01:00, 02:00, 13:00, 1:00, 2:00, 13:01, 23:59, 15:00, 00:00, 0:00, 14:34:43, 01:00:00 不匹配的时间格式: 24:00 # hour is out of range [0-23] 12:60 # minute is out of range [00-59] 0:0 # invalid format for minute, at least 2 digits 13:1 # invalid format for minute, at least 2 digits 0:00:0 # invalid format for seconds, at least 2 digits 101:00 # hour is out of range [0-23] 示例: var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:25')); // OK var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '25:25')); // KO var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '25:30')); // KO var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:2555')); // KO var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:65')); // KO var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:59')); // OK var_dump(preg_match('#^[01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', '14:34:43')); // OK ^(([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)$ 这将从00:00到23:59和00:00:00到23:59:59。 Altertantation是一个低头的操作员,因此将其包裹在一个非捕捉组中: #^(?:([01][0-9])|(2[0-3]))(:[0-5][0-9]){1,2}$# +++ + teee demohere. /(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?/ 这也将允许00:00或00:00:00,其他一些则不允许。 还将时间限制为00:00:00至23:59:59或23:59,其他一些时间允许24:00或25:00,等等。

回答 3 投票 0

CSV转换为TXT和值缩放

我的data.csv就是这样:

回答 1 投票 0


phpstr_replace()和preg_replace()不使用html

当我尝试在功能中执行str_replace()或preg_replace()时,内容不会更改。 $ sadrzaj中的内容: $ sadrzaj ='asdasdasd 当我尝试在功能中进行或preg_replace()时,内容不会改变。 变量中的内容:: $sadrzaj 我的功能$sadrzaj = '<p>asdasdasds</p><p><a href="http://www.example.com/wp-content/uploads/2018/11/image.jpg" itemprop="url" title="some title"><img alt="some alt title" class="alignnone size-full wp-image-243618" src="http://www.example.com/wp-content/uploads/2018/11/image.jpg" width="940" height="529"></a></p>asdasdasd<p>asdasd</p><h3>asdada</h3><p><a href="http://www.example.com/wp-content/uploads/2018/11/image_02.jpg" itemprop="url" title="some title 02"><img alt="some alt title 02" class="alignnone size-full wp-image-243653" src="http://www.example.com/wp-content/uploads/2018/11/image_02.jpg" width="940" height="529"></a></p><h3>asdasd</h3>'; :: to_je_to() 值函数function to_je_to($content){ preg_match_all('/<img (.*?)\/>/', $content, $images); //print_r($images); if(!is_null($images)){ foreach($images[1] as $index => $value){ if(strpos($images[1], 'size-full') !== false){ //if(preg_match('/alt=""/', $value)){ $new_img = preg_replace('<img', "<img data-example", $images[0][$index]); $content = preg_replace($images[0][$index], $new_img, $content); } } } echo $content; // return no difference } -没有任何变化。 如果有to_je_to($sadrzaj);的类,请找到此图像,然后用"size-full"替换标签。 even<img data-example ...>或不起作用。 我做错了什么? thanks 您做错了的主要事情是用正则表达式解析HTML。您应该使用适当的DOM解析器,然后可以使用XPath查询来隔离所需的元素。 str_replace() ,关于您的原始代码的一些评论: preg_replace()永远不会是<?php $sadrzaj = '<p>asdasdasds</p><p><a href="http://www.example.com/wp-content/uploads/2018/11/image.jpg" itemprop="url" title="some title"><img alt="some alt title" class="alignnone size-full wp-image-243618" src="http://www.example.com/wp-content/uploads/2018/11/image.jpg" width="940" height="529"></a></p>asdasdasd<p>asdasd</p><h3>asdada</h3><p><a href="http://www.example.com/wp-content/uploads/2018/11/image_02.jpg" itemprop="url" title="some title 02"><img alt="some alt title 02" class="alignnone size-full wp-image-243653" src="http://www.example.com/wp-content/uploads/2018/11/image_02.jpg" width="940" height="529"></a></p><h3>asdasd</h3>'; function to_je_to($content) { $dom = new DomDocument; $dom->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $xp = new DomXpath($dom); // this is complicated but is less fragile than just doing [contains(@class, 'size-full')] $nodes = $xp->query("//img[contains(concat(' ', normalize-space(@class), ' '), ' size-full ')]"); foreach ($nodes as $img) { $img->setAttribute("data-example", ""); } return $dom->saveHTML(); } echo to_je_to($sadrzaj); ,它永远是一个数组 尚不清楚为什么您要循环$images,然后基于null替换值 根本不使用组匹配$images[1]根本不需要,因此括号不需要在那里 lop中的the the the the the the the the call in the loop使用表达式周围的定义器搜索,因此两者都会失败,因为错误 $images[0]和(.*?)之间有很大的区别 您的功能(在您的preg_replace()和echo)中存在一些问题。此外,您需要在匹配return标签上的preg_match_all方面更加复杂。总体而言,您最好使用内置的DomDocument类,就像其他答案所提出的那样。如果您想继续使用正则表达式,则此功能应解决您遇到的问题。 preg_replace 3v4l.org上的demo

回答 1 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.