English 中文(简体)
在Schala 定期表达中的任择群体
原标题:Optional grouping in Scala Regular Expressions
  • 时间:2011-11-21 15:02:50
  •  标签:
  • regex
  • scala

Say 我想做的是,从档案名称(即档案名称)中分离出一个任择版本。

val regex(name, ver) = "file.jar"          // name = file, ver = empty
val regex(name, ver) = "some-software.jar" // name = some-software, ver = empty
val regex(name, ver) = "software-1.0.jar"  // name = software, ver = 1.0
val regex(name, ver) = "some-file-1.0.jar" // name = some-file, ver = 1.0

如何在Schala/Java撰写这种定期的表述? 顺便提一下,我会做一些事情:

(*)(-(<>>)*)?

但是,Schala并不支持在这一辛迪加设立任择团体。

最佳回答

我不肯定你现在的问题是什么。

我认为这不符合第二组,因为第一个组是贪.,而第二个组是选择性的,第一个组是完全相同的。

为此:

(.*?)(?:-(?=d)(.*))?.jar

See it here on Regexr

  1. I made the first group a lazy match with the .*?
  2. The second group is a non capturing group (the one starting with (?:. You will find the name now in group 1 and the version in group 2.
  3. I put a lookahead after the dash, so that it searches for a dash followed by a digit.
问题回答

如何:

/^(.+?)(?:-([d.]*))?.jar$/

假设版本总是由数人和 do混在一起。





相关问题
Uncommon regular expressions [closed]

Recently I discovered two amazing regular expression features: ?: and ?!. I was curious of other neat regex features. So maybe you would like to share some tricky regular expressions.

regex to trap img tag, both versions

I need to remove image tags from text, so both versions of the tag: <img src="" ... ></img> <img src="" ... />

C++, Boost regex, replace value function of matched value?

Specifically, I have an array of strings called val, and want to replace all instances of "%{n}%" in the input with val[n]. More generally, I want the replace value to be a function of the match ...

PowerShell -match operator and multiple groups

I have the following log entry that I am processing in PowerShell I m trying to extract all the activity names and durations using the -match operator but I am only getting one match group back. I m ...

Is it possible to negate a regular expression search?

I m building a lexical analysis engine in c#. For the most part it is done and works quite well. One of the features of my lexer is that it allows any user to input their own regular expressions. This ...

regex for four-digit numbers (or "default")

I need a regex for four-digit numbers separated by comma ("default" can also be a value). Examples: 6755 3452,8767,9865,8766,3454 7678,9876 1234,9867,6876,9865 default Note: "default" ...

热门标签