问题标签 [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.

0 投票
43 回答
19266 浏览

math - 评估一串简单的数学表达式

挑战

这是挑战(我自己的发明,但如果它以前出现在网络上的其他地方,我不会感到惊讶)。

编写一个函数,该函数接受单个参数,该参数是简单数学表达式的字符串表示形式,并将其计算为浮点值。“简单表达式”可以包括以下任何一种:正数或负数十进制数、+-*/(、、)。表达式使用(正常)中缀表示法。运算符应该按照它们出现的顺序进行评估,即不像BODMAS中那样,当然应该正确地观察括号。该函数应该为任何返回正确的结果这种形式的可能表达。但是,该函数不必处理格式错误的表达式(即语法错误的表达式)。

表达式示例:

规则

我预计这里会有某种形式的“作弊”/狡猾,所以请让我提前警告!通过作弊,我指的是eval在动态语言(如 JavaScript 或 PHP)中使用或等效函数,或者同样在运行中编译和执行代码。(我认为我对“无 BODMAS”的规范几乎可以保证这一点。)除此之外,没有任何限制。我预计这里会有一些正则表达式解决方案,但很高兴看到更多。

现在,我主要对这里的 C#/.NET 解决方案感兴趣,但任何其他语言也完全可以接受(特别是用于功能/混合方法的 F# 和 Python)。我还没有决定是否接受最短或最巧妙的解决方案(至少对于语言)作为答案,但我欢迎任何语言的任何形式的解决方案,除了我刚刚在上面禁止的!

我的解决方案

我现在在这里发布了我的 C# 解决方案(403 个字符)。更新: 在一些可爱的正则表达式的帮助下,我的新解决方案在294 chars上明显击败了旧解决方案!我怀疑这很容易被一些语法较轻的语言(特别是功能/动态语言)击败,并且已被证明是正确的,但我很好奇是否有人仍然可以在 C# 中击败它。

更新

我已经看到了一些非常狡猾的解决方案。感谢所有发布过的人。尽管我还没有测试过它们中的任何一个,但我会相信人们并假设他们至少可以使用所有给定的示例。

只是为了说明,重入(即线程安全)不是该功能的要求,尽管它是一个奖励。


格式

为了便于比较,请按以下格式发布所有答案:

语言

字符数:???

完全混淆的功能:

清除/半混淆功能:

关于它所采用的算法/聪明快捷方式的任何注释。


0 投票
7 回答
661 浏览

php - 解析单个字符串中存在的多个可预测格式的用户数据子字符串

我有一个特定模式的很长的字符串,例如:

等等。这种模式重复。

我需要找到一种方法来处理这个字符串,这样我就有了 , 等的值userAccountName:userCompany:即最好是关联数组或一些这样方便的格式)。

有没有一种简单的方法可以做到这一点,还是我必须编写自己的逻辑来将此字符串拆分为不同的部分?

0 投票
8 回答
419 浏览

language-agnostic - 有没有一种聪明的方法可以将纯文本列表解析为 HTML?

问题:有没有一种聪明的方法可以将纯文本列表解析为 HTML?

或者,我们必须求助于深奥的递归方法,还是纯粹的蛮力?

我一直在想这个有一段时间了。在我自己的沉思中,我一次又一次地回到蛮力和奇怪的递归方法……但它似乎总是那么笨拙。应该有更好的方法吧?

那么聪明的方法是什么?

假设

有必要设置一个场景,所以这些是我的假设。

  1. 列表可以嵌套 3 层深(至少),无序或有序列表。列表类型和深度由其前缀控制:

    1. 前缀后面有一个必填空格。
    2. 列表深度由前缀中有多少非空格字符控制;*****将嵌套五个列表深。
    3. 列表类型由字符类型强制执行,*或者-为无序列表,#为无序列表。
  2. 项目仅由 1 个\n字符分隔。(让我们假设两个连续的换行符符合一个“组”、一个段落、div 或其他一些 HTML 标记,如 Markdown 或 Textile。)

  3. 列表类型可以自由混合。

  4. 输出应为有效的 HTML 4,最好以</li>s结尾

  5. 可以根据需要使用或不使用 Regex 进行解析。

示例标记

期望的输出

为便于阅读而进行了一些分解,但它应该是一个有效的变体(请记住,我只是很好地间隔了它!):

总之

是怎么做到的?我真的很想了解处理不可预测的递归列表的好方法,因为它让我觉得任何人都可以纠缠不清。

0 投票
13 回答
1308 浏览

code-golf - Code Golf:从文本中快速构建关键字列表,包括实例数

我已经用 PHP 为自己制定了这个解决方案,但我很好奇它可以如何以不同的方式完成——甚至更好。我主要感兴趣的两种语言是 PHP 和 Javascript,但我很想看看在今天的任何其他主要语言(主要是 C#、Java 等)中这可以多快完成。

  1. 仅返回出现次数大于 X 的单词
  2. 仅返回长度大于 Y 的单词
  3. 忽略常见的术语,如“and, is, the, etc”
  4. 在处理之前随意去除标点符号(即“John's”变成“John”)
  5. 在集合/数组中返回结果

额外学分

  1. 将引用的陈述放在一起,(即“他们显然‘好得令人难以置信’”)
    其中“好得令人难以置信”将是实际陈述

额外的额外学分

  1. 您的脚本能否根据单词出现的频率确定应该放在一起的单词?这是在事先不知道单词的情况下完成的。例子:
    *“果蝇在医学研究方面是一件了不起的事情。过去对果蝇进行了很多研究,并带来了许多突破。未来,果蝇将继续研究,但我们的方法可能会改变。"*
    显然这里的词是“果蝇”,我们很容易找到。您的 search'n'scrape 脚本也可以确定这一点吗?

原文:http ://sampsonresume.com/labs/c.txt

答案格式

  1. 很高兴看到您的代码结果、输出以及操作持续了多长时间。
0 投票
5 回答
343 浏览

text-parsing - 大型文档的文本分析

我有一个项目,我需要将多章文档与第二个文档进行比较以确定它们的相似性。问题是我不知道如何去做,存在哪些方法,或者它们是否有任何可用的库。

我的第一个问题是......什么是相似的?匹配的单词数,匹配的连续单词数?

我可以看到编写一个解析器,将每个文档放入包含单词和位置的数组中,然后比较它们。

我在 Algorithms or libraries for text analysis 看到了较早的问题 ,具体来说:主要词、跨文本的短语和文本集合

但是,这似乎与我尝试做的有些不同。

人们可能拥有的任何选项或指示都会很棒!

0 投票
2 回答
5887 浏览

html - 创建出色的解析器 - 从 HTML/博客中提取相关文本

我正在尝试创建一个在博客文章上运行良好的通用 HTML 解析器。我想将我的解析器指向特定条目的 URL 并取回帖子本身的干净文本。我的基本方法(来自 python)是使用 BeautifulSoup / Urllib2 的组合,这没关系,但它假设您知道博客条目的正确标签。有没有人有更好的想法?

这里有一些想法,也许有人可以扩展,我还没有足够的知识/诀窍来实施。

  1. unix 程序“lynx”似乎特别擅长解析博客文章——他们使用什么解析器,或者如何使用它?

  2. 是否有任何服务/解析器可以自动删除垃圾广告等?

  3. 在这种情况下,我有一个模糊的概念,即博客文章通常包含在具有 class="entry" 或类似内容的某个定义标签中可能是一个可以接受的假设。因此,有可能创建一个算法来找到它们之间具有最干净文本的封闭标签 - 对此有什么想法吗?

谢谢!

0 投票
1 回答
648 浏览

c# - 在 C# 中解析相对日期(如谷歌日历可以)的库

我在问与此相同的问题:如何使用 Perl 解析相对日期?但在 C# 中。

对不起,如果这是重复的,如果是这样,请删除。

有这样的图书馆吗?

谢谢

0 投票
4 回答
455 浏览

php - 解析文本文件的行,其中值由不同数量的空白字符分隔

我需要在不同的数组中获取公司名称及其股票代码。这是我存储在 txt 文件中的数据:

等等

我将如何使用正则表达式或其他一些技术来做到这一点?

0 投票
3 回答
2304 浏览

java - 如何从文本文件的每一行中拆分出单独的列值?

我在 ASCII 文本文件中有需要解析的行。列由可变数量的空格分隔,例如:

我将如何拆分这条线以返回仅包含值的数组?

谢谢

0 投票
3 回答
3729 浏览

fortran - Fortran 中的字符串:可移植的 LEN_TRIM 和 LNBLNK?

我需要一个可移植函数/子程序来定位字符串中最后一个非空白字符的位置。我找到了两个选项: LEN_TRIMLNBLNK. 但是,不同的编译器似乎有不同的标准。以下编译器的官方文档表明 LEN_TRIM 是以下平台上 Fortran 95 标准的一部分:

但是,在 F95 标准之前发布的编译器似乎没有任何保证。 我的经验是,较旧的编译器可能会指定一个LEN_TRIMLNBLNK,但不一定同时指定两者。我的解决方案是使用预处理器条件:

然后传递-DUSE_LEN_TRIM给预处理器。但是,我不是预处理器条件和额外编译时标志的忠实粉丝。 您对定位字符串中最后一个非空白字符的位置的可移植(在 Fortran 95 标准之前)函数有什么建议吗?