使用ant从文本文件读取动态子字符串

使用ant从文本文件读取动态子字符串,ant,Ant,我想读一个文本文件,其文本如下(示例) abc ip-32-56-198-18.com xyz 现在文本32-56-198-18会动态更新,现在我想获取此文本并创建ip地址以供进一步使用 我已经使用PHP完成了这项工作,但是对于ant,我遇到了问题,因为我无法获得特定子字符串(如PHP)在ant中的位置 我见过类似的问题,但他知道子字符串的位置我的位置太不固定了,因为abc可以是任何长度的字符串。只有ip-和.com是修复程序,足以找到所需的 如果你们都说使用ant是不可能的,那么我可以集中精力

我想读一个文本文件,其文本如下(示例)
abc ip-32-56-198-18.com xyz

现在文本
32-56-198-18
会动态更新,现在我想获取此文本并创建ip地址以供进一步使用

我已经使用PHP完成了这项工作,但是对于ant,我遇到了问题,因为我无法获得特定子字符串(如PHP)在ant中的位置

我见过类似的问题,但他知道子字符串的位置我的位置太不固定了,因为
abc
可以是任何长度的字符串。只有
ip-
.com
是修复程序,足以找到所需的

如果你们都说使用ant是不可能的,那么我可以集中精力或做其他事情,或者尝试不同的方法来解决我的问题,放弃从ant读取相同内容的计划

谢谢大家

更新:
abc ip-23-56-89-45.com-asdhba.sip-65-59-85-12.com xyz

对于上面的例子,代码应该可以工作,它应该给我
23-56-89-45

谢谢。

正如您提到的问题的最受欢迎答案中所说的,您可以尝试使用from


正如您提到的问题的最受欢迎答案中所说的,您可以尝试使用from



你能在substring()中尝试indexOf()吗?你能在substring()中尝试indexOf()吗?:你的代码可以工作,但在我的text.com中再次出现,你的代码在
.com
的第一次出现时并没有停止。它更进一步,在
的最后一次出现时停止。com
请帮助……请不要说使用两次相同的代码!这应该是最后一个选项。对于更新后的问题,我使用了
regexp=“.*ip-(.*)\.com(.*)\.com”
,这是我们选择
\1
,这意味着我们使用的是第一个,如果我使用
\2
,则会给出第二个文本。再次感谢。@IAH2iV我已将示例中的regexp更新为ungreedy match。现在,它可以与您的两个输入一起工作。注意:您的代码可以工作,但在my text.com中,您的代码不会在第一次出现
.com
时停止。它会更进一步,并在最后出现
.com
时停止。请帮助……请不要说使用两次相同的代码!这应该是最后一个选项。对于更新后的问题,我使用了
regexp=“.*ip-(.*)\.com(.*)\.com”
,这是我们选择
\1
,这意味着我们使用的是第一个,如果我使用
\2
,则会给出第二个文本。再次感谢。@IAH2iV我已将示例中的regexp更新为ungreedy match。现在它与您的两个输入一起工作。
<project>

<taskdef resource="net/sf/antcontrib/antcontrib.properties">
  <classpath>
    <pathelement location="./ant-contrib-1.0b3.jar"/>
  </classpath>
</taskdef>

<!-- You can load the value from file -->
<property name="input" value="abc ip-32-56-198-18.com xyz"/>

<propertyregex property="ip"
              input="${input}"
              regexp=".*?ip-(.*?)\.com.*"
              select="\1"
              defaultValue="${path}" />

<echo message="IP addr: ${ip}"/>
</project>