![]() |
1
2
这是一些代码。
这只使用正则表达式查找哈希标记的所有片段
这个代码是
非常
涣散。如果hashtag中包含无法解析的垃圾,例如
|
![]() |
2
5
您可能可以使用一个表达式来确定特定行是否有效,但是如果您正试图基于输入字符串构建一个结构,那么您可能应该采用两步标记化/解析方案,因为这样做可以简化问题。
从外观上看,您有三种类型的令牌:
所以我将从一个记号赋予器开始,它被设计成将字符串转换成一系列抽象记号。每个标记都可以使用正则表达式进行匹配。
让我们用这个字符串:
你的第一个代币是
标记化技术步骤的结果是这样的一系列对象:
现在,对于在JavaScript中实现这一点来说,这并不难。标记序列可以是一个数组,您可以使用if/else块和上面的正则表达式查找标记。 重要的是将使用字符串表示(标记化技术)的部分和使用抽象表示(解析)的部分分开。它使概念上的事情简单得多。如果您以后需要新类型的令牌,也可以通过这种方式添加新类型的令牌。 |
![]() |
3
0
正则表达式用于确定给定的模式是否存在,并可能对其起作用(替换、删除等)。您需要做的不止这些;您需要确定是否存在模式,然后根据该模式进行某种分析。如果是我,我将按如下方式执行(下面是伪代码): if(string_begins_with('#')) { if(string_contains('p')) { // get numbers following using some "CSV-to-array" function } if(string_contains('h') { foreach('h') { // check for 's' following, do csv-to-array thing } } }
编辑:如果你真的想走这条路,你必须使用lookaheads。假设
这可能需要一些工作,但这是一个开始。 |
![]() |
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 6 月前 |
![]() |
Alex · 在轻量级中同时解构和不解构变量 6 月前 |
![]() |
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 6 月前 |
![]() |
bairog · 从按属性筛选的对象数组字典中创建值数组 6 月前 |
![]() |
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 6 月前 |