标签: grouping

Perl中的Regex Group:如何从正则表达式组中将元素捕获到数组中,以匹配字符串中未知数量的/多个/变量出现?

在Perl中,如何使用一个正则表达式分组来捕获多个匹配它的事件到多个数组元素?

例如,对于字符串:

var1=100 var2=90 var5=hello var3="a, b, c" var7=test var3=hello
Run Code Online (Sandbox Code Playgroud)

用代码处理这个:

$string = "var1=100 var2=90 var5=hello var3=\"a, b, c\" var7=test var3=hello";

my @array = $string =~ <regular expression here>

for ( my $i = 0; $i < scalar( @array ); $i++ )
{
  print $i.": ".$array[$i]."\n";
}
Run Code Online (Sandbox Code Playgroud)

我想看看输出:

0: var1=100
1: var2=90
2: var5=hello
3: var3="a, b, c"
4: var7=test
5: var3=hello
Run Code Online (Sandbox Code Playgroud)

我会用什么作为正则表达式?

我想在这里匹配的东西之间的共性是一个赋值字符串模式,所以类似于:

my @array = $string =~ m/(\w+=[\w\"\,\s]+)*/;
Run Code Online (Sandbox Code Playgroud)

其中*表示与该组匹配的一个或多个事件.

(我使用split()打折,因为有些匹配本身包含空格(即var3 ...),因此不会产生预期的结果.)

有了上面的正则表达式,我只得到:

0: var1=100 var2
Run Code Online (Sandbox Code Playgroud)

正则表达式是否可能?还是需要添加代码?

在查找"perl regex …

regex perl grouping match

47
推荐指数
4
解决办法
7万
查看次数

哪个SQL语句更快?(HAVING vs. WHERE ......)

SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM  PRACOWNICY
    GROUP BY NR_DZIALU
    HAVING NR_DZIALU = 30
Run Code Online (Sandbox Code Playgroud)

要么

SELECT NR_DZIALU, COUNT (NR_DZIALU) AS LICZ_PRAC_DZIALU
    FROM PRACOWNICY
    WHERE NR_DZIALU = 30
    GROUP BY NR_DZIALU
Run Code Online (Sandbox Code Playgroud)

sql performance grouping if-statement

41
推荐指数
3
解决办法
3万
查看次数

将列表的元素分组到子列表中(可能使用guava)

我想分组列表的元素.我现在这样做:

public static <E> List<List<E>> group(final List<E> list, final GroupFunction<E> groupFunction) {

    List<List<E>> result = Lists.newArrayList();

    for (final E element : list) {

        boolean groupFound = false;
        for (final List<E> group : result) {
            if (groupFunction.sameGroup(element, group.get(0))) {
                group.add(element);
                groupFound = true;
                break;
            }
        }
        if (! groupFound) {

            List<E> newGroup = Lists.newArrayList();
            newGroup.add(element);
            result.add(newGroup);
        }
    }

    return result;
}

public interface GroupFunction<E> {
    public boolean sameGroup(final E element1, final E element2);
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,最好是使用番石榴?

java grouping function list guava

36
推荐指数
2
解决办法
4万
查看次数

按周/月/等分组和ActiveRecord?

我在我的产品中做了一些静力学计算.用户已经执行了许多操作,比方说发布了评论.我希望能够向他们展示他们在过去一个月或过去一年中每个月每周发布的评论数量.

有没有办法用activerecord这种方式分组?我最好只是手动执行此操作 - 根据我自己的标准迭代记录总结?

class User < ActiveRecord::Base
  has_many :comments
end

class Comments < ActiveRecord::Base
  belongs_to :user
end

@user.comments(:all).map {|c| ...do my calculations here...}
Run Code Online (Sandbox Code Playgroud)

或者有更好的方法吗?

谢谢!奥伦

activerecord grouping ruby-on-rails

35
推荐指数
4
解决办法
3万
查看次数

如何在xslt元素上应用group by

我需要根据某个属性对值进行分组并填充它.

下面提到的是i/p xml,如果你看到有4行用户和id 2,4分是相同的,即HR

虽然产生实际的o/p我需要按分组分组......任何帮助???

I/P XML

<Users>
 <User id="2" name="ABC" Division="HR"/> 
 <User id="3" name="xyz" Division="Admin"/> 
 <User id="4" name="LMN" Division="Payroll"/> 
 <User id="5" name="PQR" Division="HR"/> 
</Users>
Run Code Online (Sandbox Code Playgroud)

预期结果:我需要根据Division进行分组并填充ie

<AllUsers>
 <Division value="HR">
  <User> 
   <id>2</id>
   <name>ABC</name>
  </User> 
  <User> 
   <id>5</id>
   <name>PQR</name>
  </User>
 </Division>
 <Division value="ADMIN">
  <User> 
   <id>3</id>
   <name>XYZ</name>
  </User> 
 </Division>
 <Division value="Payroll">
  <User> 
   <id>4</id>
   <name>LMN</name>
  </User> 
 </Division>
</AllUsers>
Run Code Online (Sandbox Code Playgroud)

xslt grouping

35
推荐指数
2
解决办法
7万
查看次数

SQLite计数,组和按计数排序

我有一个看起来像这样的表:

FOO  BAR  BAZ
----+----+----
foo1 bar1 baz1
foo2 bar3 baz2
foo3 bar1 baz3
foo4 bar1 baz4
foo5 bar3 baz5
foo6 bar1 baz6
foo7 bar2 baz7
Run Code Online (Sandbox Code Playgroud)

结果我想知道每个栏在表中出现的次数..所以,我正在寻找的输出看起来像这样:

BAR   COUNT
-----+-----
bar1    4
bar3    2
bar2    1
Run Code Online (Sandbox Code Playgroud)

我可以在SQLite中查询类似的内容吗?我想它应该很简单,但我不是一个SQL程序员,我只需要这个简单的查询作为python脚本的一部分..谢谢.

sqlite sorting grouping counting

33
推荐指数
1
解决办法
4万
查看次数

如何在python中按类似的索引/属性对元组/对象列表进行分组?

给出一个清单

old_list = [obj_1, obj_2, obj_3, ...]
Run Code Online (Sandbox Code Playgroud)

我想创建一个列表:

new_list = [[obj_1, obj_2], [obj_3], ...]
Run Code Online (Sandbox Code Playgroud)

哪里obj_1.some_attr == obj_2.some_attr.

我可以把一些for循环和if检查放在一起,但这很难看.这有什么pythonic方式吗?顺便说一句,对象的属性都是字符串.

或者,也可以理解包含元组(具有相同长度)而不是对象的列表的解决方案.

python grouping list

31
推荐指数
3
解决办法
3万
查看次数

在Oracle中连接并分组多行

可能重复:
如何在Oracle中以A,B格式检索两列数据

假设我有一个这样的表:

NAME          GROUP_NAME
name1         groupA
name2         groupB
name5         groupC
name4         groupA
name3         groupC
Run Code Online (Sandbox Code Playgroud)

我想得到这样的结果:

GROUP_NAME     NAMES
groupA         name1,name4
groupB         name2
groupC         name3,name5
Run Code Online (Sandbox Code Playgroud)

如果表中只有一列,我可以通过执行以下操作来连接记录,但是在上下文中进行分组时,我真的没有太多想法.

连接一个列表:

SELECT names 
FROM (SELECT SYS_CONNECT_BY_PATH(names,' ') names, level
      FROM name_table

      START WITH names = (SELECT names FROM name_table WHERE rownum = 1)
      CONNECT BY PRIOR names < names
      ORDER BY level DESC)
      WHERE rownum = 1 
Run Code Online (Sandbox Code Playgroud)

更新:

我现在有一个解决方案LISTAGG:

SELECT
group_name,
LISTAGG(name, ', ')
WITHIN GROUP (ORDER BY GROUP) "names"
FROM name_table
GROUP …
Run Code Online (Sandbox Code Playgroud)

sql oracle grouping concatenation group-concat

30
推荐指数
1
解决办法
8万
查看次数

如何分组像whatsapp的安卓通知?

我不知道如何将两个或多个通知分组到一个并显示"你有两条新消息"这样的消息.

notifications stack grouping android google-cloud-messaging

29
推荐指数
1
解决办法
4万
查看次数

在不收集Java8流的情况下对其进行分组

Java 8中是否有任何方法可以将元素分组java.util.stream.Stream而不收集它们?我希望结果Stream再次出现.因为我必须处理大量数据甚至无限流,所以我无法先收集数据并再次流式传输结果.

需要分组的所有元素在第一个流中是连续的.因此我喜欢让流评估保持懒惰.

java grouping java-8 java-stream

29
推荐指数
1
解决办法
4409
查看次数