问题标签 [text-parsing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
math - 评估一串简单的数学表达式
挑战
这是挑战(我自己的发明,但如果它以前出现在网络上的其他地方,我不会感到惊讶)。
编写一个函数,该函数接受单个参数,该参数是简单数学表达式的字符串表示形式,并将其计算为浮点值。“简单表达式”可以包括以下任何一种:正数或负数十进制数、+、-、*、/、(、、)。表达式使用(正常)中缀表示法。运算符应该按照它们出现的顺序进行评估,即不像在 BODMAS中那样,当然应该正确地观察括号。该函数应该为任何返回正确的结果这种形式的可能表达。但是,该函数不必处理格式错误的表达式(即语法错误的表达式)。
表达式示例:
规则
我预计这里会有某种形式的“作弊”/狡猾,所以请让我提前警告!通过作弊,我指的是eval
在动态语言(如 JavaScript 或 PHP)中使用或等效函数,或者同样在运行中编译和执行代码。(我认为我对“无 BODMAS”的规范几乎可以保证这一点。)除此之外,没有任何限制。我预计这里会有一些正则表达式解决方案,但很高兴看到更多。
现在,我主要对这里的 C#/.NET 解决方案感兴趣,但任何其他语言也完全可以接受(特别是用于功能/混合方法的 F# 和 Python)。我还没有决定是否接受最短或最巧妙的解决方案(至少对于语言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚刚在上面禁止的!
我的解决方案
我现在在这里发布了我的 C# 解决方案(403 个字符)。更新: 在一些可爱的正则表达式的帮助下,我的新解决方案在294 chars上明显击败了旧解决方案!我怀疑这很容易被一些语法较轻的语言(特别是功能/动态语言)击败,并且已被证明是正确的,但我很好奇是否有人仍然可以在 C# 中击败它。
更新
我已经看到了一些非常狡猾的解决方案。感谢所有发布过的人。尽管我还没有测试过它们中的任何一个,但我会相信人们并假设他们至少可以使用所有给定的示例。
只是为了说明,重入(即线程安全)不是该功能的要求,尽管它是一个奖励。
格式
为了便于比较,请按以下格式发布所有答案:
语言
字符数:???
完全混淆的功能:
清除/半混淆功能:
关于它所采用的算法/聪明快捷方式的任何注释。
php - 解析单个字符串中存在的多个可预测格式的用户数据子字符串
我有一个特定模式的很长的字符串,例如:
等等。这种模式重复。
我需要找到一种方法来处理这个字符串,这样我就有了 , 等的值userAccountName:
(userCompany:
即最好是关联数组或一些这样方便的格式)。
有没有一种简单的方法可以做到这一点,还是我必须编写自己的逻辑来将此字符串拆分为不同的部分?
language-agnostic - 有没有一种聪明的方法可以将纯文本列表解析为 HTML?
问题:有没有一种聪明的方法可以将纯文本列表解析为 HTML?
或者,我们必须求助于深奥的递归方法,还是纯粹的蛮力?
我一直在想这个有一段时间了。在我自己的沉思中,我一次又一次地回到蛮力和奇怪的递归方法……但它似乎总是那么笨拙。应该有更好的方法吧?
那么聪明的方法是什么?
假设
有必要设置一个场景,所以这些是我的假设。
列表可以嵌套 3 层深(至少),无序或有序列表。列表类型和深度由其前缀控制:
- 前缀后面有一个必填空格。
- 列表深度由前缀中有多少非空格字符控制;
*****
将嵌套五个列表深。 - 列表类型由字符类型强制执行,
*
或者-
为无序列表,#
为无序列表。
项目仅由 1 个
\n
字符分隔。(让我们假设两个连续的换行符符合一个“组”、一个段落、div 或其他一些 HTML 标记,如 Markdown 或 Textile。)列表类型可以自由混合。
输出应为有效的 HTML 4,最好以
</li>
s结尾可以根据需要使用或不使用 Regex 进行解析。
示例标记
期望的输出
为便于阅读而进行了一些分解,但它应该是一个有效的变体(请记住,我只是很好地间隔了它!):
总之
你是怎么做到的?我真的很想了解处理不可预测的递归列表的好方法,因为它让我觉得任何人都可以纠缠不清。
code-golf - Code Golf:从文本中快速构建关键字列表,包括实例数
我已经用 PHP 为自己制定了这个解决方案,但我很好奇它可以如何以不同的方式完成——甚至更好。我主要感兴趣的两种语言是 PHP 和 Javascript,但我很想看看在今天的任何其他主要语言(主要是 C#、Java 等)中这可以多快完成。
- 仅返回出现次数大于 X 的单词
- 仅返回长度大于 Y 的单词
- 忽略常见的术语,如“and, is, the, etc”
- 在处理之前随意去除标点符号(即“John's”变成“John”)
- 在集合/数组中返回结果
额外学分
- 将引用的陈述放在一起,(即“他们显然‘好得令人难以置信’”)
其中“好得令人难以置信”将是实际陈述
额外的额外学分
- 您的脚本能否根据单词出现的频率确定应该放在一起的单词?这是在事先不知道单词的情况下完成的。例子:
*“果蝇在医学研究方面是一件了不起的事情。过去对果蝇进行了很多研究,并带来了许多突破。未来,果蝇将继续研究,但我们的方法可能会改变。"*
显然这里的词是“果蝇”,我们很容易找到。您的 search'n'scrape 脚本也可以确定这一点吗?
原文:http ://sampsonresume.com/labs/c.txt
答案格式
- 很高兴看到您的代码结果、输出以及操作持续了多长时间。
text-parsing - 大型文档的文本分析
我有一个项目,我需要将多章文档与第二个文档进行比较以确定它们的相似性。问题是我不知道如何去做,存在哪些方法,或者它们是否有任何可用的库。
我的第一个问题是......什么是相似的?匹配的单词数,匹配的连续单词数?
我可以看到编写一个解析器,将每个文档放入包含单词和位置的数组中,然后比较它们。
我在 Algorithms or libraries for text analysis 看到了较早的问题 ,具体来说:主要词、跨文本的短语和文本集合
但是,这似乎与我尝试做的有些不同。
人们可能拥有的任何选项或指示都会很棒!
html - 创建出色的解析器 - 从 HTML/博客中提取相关文本
我正在尝试创建一个在博客文章上运行良好的通用 HTML 解析器。我想将我的解析器指向特定条目的 URL 并取回帖子本身的干净文本。我的基本方法(来自 python)是使用 BeautifulSoup / Urllib2 的组合,这没关系,但它假设您知道博客条目的正确标签。有没有人有更好的想法?
这里有一些想法,也许有人可以扩展,我还没有足够的知识/诀窍来实施。
unix 程序“lynx”似乎特别擅长解析博客文章——他们使用什么解析器,或者如何使用它?
是否有任何服务/解析器可以自动删除垃圾广告等?
在这种情况下,我有一个模糊的概念,即博客文章通常包含在具有 class="entry" 或类似内容的某个定义标签中可能是一个可以接受的假设。因此,有可能创建一个算法来找到它们之间具有最干净文本的封闭标签 - 对此有什么想法吗?
谢谢!
php - 解析文本文件的行,其中值由不同数量的空白字符分隔
我需要在不同的数组中获取公司名称及其股票代码。这是我存储在 txt 文件中的数据:
等等
我将如何使用正则表达式或其他一些技术来做到这一点?
java - 如何从文本文件的每一行中拆分出单独的列值?
我在 ASCII 文本文件中有需要解析的行。列由可变数量的空格分隔,例如:
我将如何拆分这条线以返回仅包含值的数组?
谢谢
fortran - Fortran 中的字符串:可移植的 LEN_TRIM 和 LNBLNK?
我需要一个可移植函数/子程序来定位字符串中最后一个非空白字符的位置。我找到了两个选项: LEN_TRIM
和LNBLNK
. 但是,不同的编译器似乎有不同的标准。以下编译器的官方文档表明 LEN_TRIM 是以下平台上 Fortran 95 标准的一部分:
但是,在 F95 标准之前发布的编译器似乎没有任何保证。 我的经验是,较旧的编译器可能会指定一个LEN_TRIM
或LNBLNK
,但不一定同时指定两者。我的解决方案是使用预处理器条件:
然后传递-DUSE_LEN_TRIM
给预处理器。但是,我不是预处理器条件和额外编译时标志的忠实粉丝。 您对定位字符串中最后一个非空白字符的位置的可移植(在 Fortran 95 标准之前)函数有什么建议吗?