Javascript 点之前/之后的Regex n序列

Javascript 点之前/之后的Regex n序列,javascript,java,regex,Javascript,Java,Regex,我有下面的字符串,我想获取其中的lastName、firstName、middleName和id(字符串的前四部分) 我很难写出一个正则表达式,它会给出每个点之前的第n个序列。我有一些类似的东西,但它没有像我预期的那样工作(我离正则表达式专家很远): 最后,我希望lastName='SMITH',firstName='JOHN',middleName='DOE',以及id=1234567890,所有这些都没有前导或尾随句点/逗号 我确实专门为lastName编写了一个变量,但我不想为每个变量编写

我有下面的字符串,我想获取其中的lastName、firstName、middleName和id(字符串的前四部分)

我很难写出一个正则表达式,它会给出每个点之前的第n个序列。我有一些类似的东西,但它没有像我预期的那样工作(我离正则表达式专家很远):

最后,我希望
lastName='SMITH'
firstName='JOHN'
middleName='DOE'
,以及
id=1234567890
,所有这些都没有前导或尾随句点/逗号

我确实专门为lastName编写了一个变量,但我不想为每个变量编写特定的变量。我希望能够简单地更改索引跳过编号:

str.match(/^.*?(?=\.)/) => 'SMITH'
使用
/.*(?=[\.\,])/g
可以拆分我想要的值,但我正在设置的系统将使用它自己的正则表达式而不是循环来提取每个值。这就是为什么我要尝试提取精确的值

我可以用Java或JavaScript实现,但我可能更喜欢Java。

您可以使用

^(?:[^,.]+\.){3}([^,.]+)

然后,将3更改为所需的索引,以将所需的值抓取到组1中

详细信息

  • ^
    -字符串的开头
  • (?:[^,.]+\.{3}
    -3序列(您可以在这里使用
    {0}
    获取第一个值,
    {1}
    获取第二个值,等等)1+字符,而不是
    (请参见
    [^,.]+
    ),后跟一个点
  • ([^,.]+)
    -第1组捕获1+个字符,而不是

您需要使用
+空格进行拆分,然后使用
拆分
块[0]
。这是一种非常简单的方法,但不足以说明编写方法。您的意思是什么?请澄清这不足以说明如何编写。我的代码需要是
String lastName=str.match(lastNameRegex)[0]。没有循环,没有额外的逻辑,正如我在问题中已经说过的。那么,Java还是JS?请说得准确点Wiktor我想我应该尽快问你。。。我被扔了一条皱纹,以至于
middleName
可能不存在,这样我就可以拥有
SMITH.JOHN.1234567890
SMITH.JOHN.DOE.1234567890
意思是
{2}
可能给我错误的值。我仍然可以使用您为
lastName
firstName
middleName
提供的内容,如果它是整数,则可能会将
middleName
去掉。另外,我想写第二个表达式,它获取第一个逗号之前的所有内容,向后到找到的第一个句点(这将是该序列的最后一个句点)。你能帮忙吗?现在不行,我得去幼儿园接我女儿。可选组可用于此目的。或者,可能是2个regexp。我正在使用
[^\.\,]*(?=,)
来捕获id。1)在第一个逗号之前获取全部:。2) 将每个部分分成一个特定的组:(在这里,第三个组在非捕获组
(?:…)?
)的帮助下是可选的。直到今天,我的评分还不够高,但我只是投了一个较高的票。谢谢
str.match(/^.*?(?=\.)/) => 'SMITH'
^(?:[^,.]+\.){3}([^,.]+)