c# - 如何找到特定 BBCode 标签的索引位置(正则表达式)
问题描述
我有一个字符串,比如说:
[s]AB[/s]23[sb]45[/sb]AB45ABABAB
我想找到由包含字母 s 的标记包围的所有索引,因此包括 [s] 和 [sb]。
对findIndices("[s]01[/s]23[sb]45[/sb]AB45ABABAB", "s")的函数调用将返回列表 [0, 1, 4, 5]。请注意,索引忽略所有 BBCode。换句话说,它认为第一个“A”字符的索引是 0,而不是 3。
如何在 C# 中实现 findIndices。我尝试使用 System.Text.RegularExpressions 但我遇到了麻烦,困难在于找到与删除 BBCode 的字符串相关的索引。
解决方案
像这样的正则表达式模式(?<=[^/]s.?\]).+?(?=\[)
将匹配例如AB
和45
我们检查(向后看)我们后面是否有 ans
和 a ,但没有,然后匹配字符直到我们点击 a 。我可能错过了一些边缘情况,所以要小心并测试一下。]
/
[
(如果您特别需要索引,可以从正则表达式匹配对象中获取这些索引)
推荐阅读
- r - 如何按年份减去每个国家/地区的值
- django-forms - 渲染 HTML 时删除所需的 attr
- react-native - Android 'react-native-gesture-handler' 错误
- python - 如何在多进程共享数组中从 lmfit 传递 ModelResult 类?
- r - 如何在 R 中将列名的编码更改为 utf 8
- python - 在 python 中,如何在 api 端点的 { 之前添加一个 $ 符号
- r - 使用新数据集在 purrr::map 之后从 glm 模型预测概率
- sorting - Kotlin 中的比较器解释
- php - 使用 API PHP 创建带有图像和价格的 Shopify 产品
- java - jose4j 是否自动处理 Azure 签名密钥翻转?