php - 匹配包裹图案

标签 php regex

什么正则表达式模式可用于查找带有括号对中的点的单词。

as. df.kj hlasfa (asd. las kdfh.) dfs adk jfh. a (sd.kf) jhd (dsk fh.) dskfdf asdf dfs lkjh asdfdsfjkhlkjh (asdf.)as fadf asf

所需结果以粗体显示。

最佳答案

您可以使用 lookahead ,断言下一个右括号之前没有左括号:

preg_match_all('/[a-zA-Z]+\.(?![a-zA-Z])(?=[^()]*\))/', $input, $matches);

您将在 $matches 中找到四个匹配项。

第一个否定前瞻消除了 HamZa 在评论中提到的情况。第二个(正)前瞻尝试在下一个左括号之前找到右括号。

这里有一个警告。一旦你有嵌套括号,这就会开始崩溃。 some(text.(here))text. 不匹配。嵌套模式(可能因使用括号而出现)通常超出正则表达式的范围,尽管某些引擎可以部分处理它们。如果您遇到这种情况,您最好手动检查字符串并计算括号数。

关于php - 匹配包裹图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13324340/

相关文章:

regex - 我如何使用TextMate对csv文件的每个值加上双引号?

php - 解析大 JSON 文件并使用 php 插入数据库的最佳方法是什么?

javascript - 为什么我的 AJAX 请求没有返回正确的文本?

regex - Powershell RegEx - 捕获 "too much"(不遵守非贪婪指标?)

regex - 生成适合 Guids 的单词(仅供娱乐)

Javascript正则表达式匹配k后面不跟数字0

javascript - Ajax 动态选择表单未提交值

javascript - 重新编码函数

javascript - 使用 AJAX 设置间隔

python - 正则表达式优化 - C enum typedef